【问题标题】:Java SimpleDateFormat not parsing correctly [duplicate]Java SimpleDateFormat 解析不正确[重复]
【发布时间】:2015-02-20 16:38:08
【问题描述】:

我正在处理来自输入文件的日期列表,我需要将每个日期从字符串转换为日期。格式示例:

2013 年 9 月 2 日晚上 7:34:17
2011 年 1 月 13 日上午 10:47:36

每次读取一行时,日期都会存储在字符串变量dateAsString 中。这是我得到的:

DateFormat format = new SimpleDateFormat("MM/dd/YYYY hh:mm:ss a");  
Date myDate = format.parse(dateAsString);  
System.out.println(myDate.toString());  

输出不正确:

2013 年 9 月 2 日晚上 7:34:17 变为 2012 年 12 月 30 日星期日 19:34:17 EST 2012
2011 年 1 月 13 日上午 10:47:36 变为 2010 年 12 月 26 日星期日 10:47:36 EST 2010

这似乎很简单,所以我很困惑。我做错了什么?

【问题讨论】:

  • 使用 yyyy 代替 YYYY。
  • 呃,太简单了!谢谢。

标签: java simpledateformat


【解决方案1】:

只需尝试“yyyy”而不是“YYYY”

【讨论】:

    【解决方案2】:

    大写字母“Y”表示“周年”,其中​​“y”代表实际年份。尝试改用yyyy

    如需更多格式帮助,请查看SimpleDateFormat API,其中提供了要使用的模式示例。

    额外信息

    如果您想知道,“周年”是指一年中的所有周都是整周

    【讨论】:

      【解决方案3】:

      您的格式不正确,您可以在 Javadoc 中看到:

      http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

      年份部分使用 yyyy 而不是 YYYY

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-03
        • 2012-05-23
        • 1970-01-01
        • 1970-01-01
        • 2013-10-01
        相关资源
        最近更新 更多