今天是星期二,2010年2月9日的日期,当我打印的日期,我得到了错误的日期:Java的日期格式和SimpleDateFormat的返回是不正确
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());
打印线的结果:“今天是星期六Jan 09 00:00:00 CST 2010“
这当然不是09年1月9日星期六,它是2009年2月9日星期二。我假设我做错了什么,所以有人可以让我知道这里有什么问题吗?我是否必须手动设置星期几?
更新 注:我今天不想来初始化new Date()
,因为我想要的小时,分钟,秒和毫秒初始化为0
。这是必要的,所以我可以将用户输入日期与今天进行比较:如果用户输入今天的日期,并使用格式化程序构建日期对象,那么如果我今天用new Date()
进行初始化,并比较两个日期 - 今天将为用户选择的日期(这是不正确的)。因此,我需要在没有hr/min/sec/ms的情况下在今天开始时进行初始化。
为什么地球上,你会得到“今天”呀?为什么不今天=新日期()?你的方式是漫长的,正如你所看到的,甚至是不正确的。 – duffymo 2010-02-10 01:02:51
@duffymo 它在JSP中。假设用户选择今天作为他们想要的日子,那么他们的输入被转发到另一个JSP。我在第二个jsp初始化今天的日期之前记录了用户输入(使用新的Date(),它初始化为用户输入后的当前时间),所以今天将始终在用户选择日期之后,即使用户选择了同一天。因此,我需要今天进行初始化,并将hr/min/sec/ms保持为0. – Kiril 2010-02-10 19:43:40
听起来像第二个JSP应该从第一个JSP的HTTP请求解析“today”,而不是调用“new Date”。如果答案很混乱,那是因为你的问题和要求也是如此。 – duffymo 2010-02-10 20:29:48