2012-09-27 168 views
2

为什么今天的日期显示为之前的日期?为什么今天的日期显示为之前的日期?

import java.text.DateFormat; 
import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.ArrayList; 
import java.util.Date; 
import java.util.List; 

public class Test { 

    public static void main(String args[]) throws ParseException { 

     Date date = new Date(); 

     DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 

     List currentObject = new ArrayList(); 

     currentObject.add("2012-09-27"); 
     Date ExpDate = dateFormat.parse((String) currentObject.get(0)); 

     if (ExpDate.before(date)) { 
      System.out.println("true"); 
     } 

     else { 
      System.out.println("false"); 
     } 
    } 

} 

任何想法?

+1

因为我们在2012年9月27日之后的0小时... –

+0

试着打印出date的值和ExpDate的值,你会明白为什么'ExpDate'在'date'之前。 – Jesper

+0

你只需要做一个**全选**和** Ctrl ** ** ** ** ** ** K **,来格式化它:) – mtk

回答

5
Date date = new Date(); 

将产生的时间太长,但这

currentObject.add("2012-09-27"); 
dateFormat.parse((String) currentObject.get(0)); 

将默认为00:00:00,为您dateFormat排除时间从而导致时间部分被设置为0h

所以它是正确的:

ExpDate: 2012-09-27 00:00:00 

早于

date: 2012-09-27 <some time later than midnight> 
+0

Date date = new Date(); Date ExpDate = dateFormat.parse((String)currentObject.get(0)); if(ExpDate .before(date)) 必须返回false – Pawan

+0

表示当前日期之前必须返回false。 – Pawan

+0

我编辑了我的问题,请你帮忙 – Pawan

0

当你说

Date date = new Date();

您正在创建是即时Date对象创建,即27 2012年9月11:59:01.01。

这是您之前创建的日期之后,其中没有指定时间组件,因此默认为00:00:00.000。

相关问题