今天是星期二,二月9 2010年当我打印的日期我得到了错误的日期:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");

Date today = formatter.parse(String.format("%04d-%02d-%02d",
        Calendar.getInstance().get(Calendar.YEAR),
        Calendar.getInstance().get(Calendar.MONTH),
        Calendar.getInstance().get(Calendar.DAY_OF_MONTH)));

System.out.println("Today is " + today.toString());

印刷线路的结果:"今天是周六扬09 00:00:00科技委2010年"

它肯定不是星期六扬09,这是星期二月09.我假设我在做的事情是错误的,因此任何人都可以让我知道什么是错误在这里?我必须手动设置的一天一周?

更新 注:我不想今天来初始化 new Date() 因为我想要个小时,分钟,毫秒秒和初始化 0.这是必要的,这样我就可以比较的用户输入日期的今天:如果用户输入今天的日期我和使用的格式,以建造一个新的对象,那么,如果我今天来初始化 new Date() 我比较两个日期--今天会 用户选择的日期(这是不正确的).因此,我需要初始化在今天一天的开始而不hr/min/sec/ms。

有帮助吗?

解决方案

令人混淆,日历月最从0(January)11(二月),所以你就是传递"2010-01-09"到格式化程序。分析()当你提取的每月领域的日历。

有一个讨论这一在一个相关的 所以问题.

其他提示

如果你不想使用JodaTime你可以使用:

Calendar calendar = Calendar.getInstance();

calendar.set( Calendar.HOUR_OF_DAY, 0 );
calendar.set( Calendar.MINUTE, 0 );
calendar.set( Calendar.SECOND, 0 );
calendar.set( Calendar.MILLISECOND, 0 );

Date today = calendar.getTime();

这是更加高效和更少的容易出错,比你的串格/分析的方法。

如果你可以使用JodaTime这是一个多的优选方法:

LocalDate date = new DateTime().toLocaleDate();
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top