Java日期转换

时间:2013-08-02 07:19:23

标签: java date

在以下代码中 输入:

Enter Date: 3/2/2011

输出:

Entered Date is February 3, 2011
Entered Month is 02

问题是,当我输入此日期3/14/2012时,日期格式功能会自动将月份更改为12+2二月)。如果我添加13/15/2011,则会将月份更改为3(12+3)

{em}

14

3 个答案:

答案 0 :(得分:4)

对于每个DateFormat实例,您需要使用false参数调用setLenient

DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
df.setLenient(false);
DateFormat f = new SimpleDateFormat("dd");
f.setLenient(false);
DateFormat m = new SimpleDateFormat("MM");
m.setLenient(false);

来自DateFormat#setLenient(boolean)文档:

  

通过宽松解析,解析器可以使用启发式方法来解释与该对象的格式不完全匹配的输入。通过严格的解析,输入必须与此对象的格式匹配。

答案 1 :(得分:2)

参考这些格式Java Date Format Docs

Formats for datetime

DateFormat df = new SimpleDateFormat("dd/MM/yyyy");

您希望月份位于第二位,而输入则将其放在第一位。

尝试:

DateFormat df = new SimpleDateFormat("MM/dd/yyyy");

答案 2 :(得分:0)

您是否尝试在DateFormat上使用“setLenient(false)”来强制DateFormat严格解析输入? 我还没有尝试过,但最近偶然发现了这个功能。