【问题标题】:Simple date format reading month incorrectly [duplicate]简单的日期格式读取月份不正确[重复]
【发布时间】:2015-12-21 01:58:05
【问题描述】:

我正在将日期字符串转换为纪元时间,然后再返回,但是当我转换为纪元时,当我解析日期字符串时似乎忽略了月份

String timeString = "15 Aug 2005 13:07:58.035";
Date dateTime = null;
SimpleDateFormat sdf = new SimpleDateFormat("DD MMM yyyy hh:mm:ss", Locale.US);
try {
    dateTime = sdf.parse(timeString);
} catch (ParseException e) {
    e.printStackTrace();
}
long convert = dateTime.getTime();
System.out.println(str);
System.out.println(convert);
Date epochToString = new Date(convert);
System.out.println(epochToString.toString());

这是输出

15 Aug 2005 13:07:58.035
1105812478000
Sat Jan 15 13:07:58 EST 2005

当我手动计算纪元时间时,日期确实是 2005 年 1 月 15 日,所以由于某种原因,我的格式中忽略了 MMM 值。

编辑: 我还应该注意,我将格式标记更改为 MM 并尝试在字符串中使用数字表示,但结果完全相同。

【问题讨论】:

    标签: java date simpledateformat


    【解决方案1】:

    这是因为DD 表示一年中的一天。你想要dd 一个月的一天。见SimpleDateFormat Javadoc

    我建议你使用HH 24 小时。

    【讨论】:

    • 这是不正确的,我在字符串的后半部分使用 mm 几分钟,而 javadoc 实际上确实说 MMM 是几个月的令牌,不过谢谢。
    • @pianoisland 你是对的,修正了我的答案。
    猜你喜欢
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-22
    • 2013-03-31
    相关资源
    最近更新 更多