【问题标题】:Java SimpleDateFormat parse not reversibile? [duplicate]Java SimpleDateFormat 解析不可逆? [复制]
【发布时间】:2013-10-01 14:04:52
【问题描述】:

我正在尝试解析日期格式字符串,然后打印出相同模式的格式化字符串。我期待他们是一样的。但是输出与输入不一致。非常感谢任何帮助

这是我的代码

import java.text.SimpleDateFormat;
import java.util.Date;

public class Test{
    public static void main(String[] args) {
    String pattern=args[0];
    String dtstr = args[1];
    SimpleDateFormat sdf = new SimpleDateFormat(pattern);
    Date date = new Date();
    try {
        //
        String fmtd = sdf.format(date);
        System.out.println("The formatted string: " +fmtd);
        System.out.println("The parsed date is: " + sdf.format(sdf.parse(fmtd)));
        System.out.println("The parsed date from input is: " + sdf.format(sdf.parse(dtstr)));
    } catch (Exception e) {
        e.printStackTrace();
    }
  }
}

这是我调用它的方式

JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/ sudo java Test "EEE MMM dd YYYY HH:mm:ss Z (zzzz)" "Sun Sep 22 2013 20:03:46 +0530 (India Standard Time)"

这是输出

The formatted string: Wed Sep 25 2013 19:55:57 +0000 (Coordinated Universal Time)
The parsed date is: Wed Jan 02 2013 19:55:57 +0000 (Coordinated Universal Time)
The parsed date from input is: Sun Dec 30 2013 20:03:46 +0530 (India Standard Time)

我希望 formatted stringparsed strings 是相同的 我做错了什么?

【问题讨论】:

    标签: java parsing date format


    【解决方案1】:

    您在格式字符串中使用了YYYY。应该是yyyy:

    "EEE MMM dd yyyy HH:mm:ss Z (zzzz)";
    

    Y 代表Week Year

    一周年与WEEK_OF_YEAR 周期同步。之间的所有星期 第一周和最后一周(含)具有相同的周年值。 因此,一周年的第一天和最后一天可能有不同的 日历年值。

    例如,1998 年 1 月 1 日是Thursday。如果getFirstDayOfWeek()MONDAYgetMinimalDaysInFirstWeek() 为 4(ISO 8601 标准 兼容设置),然后 1998 年的第 1 周从 1997 年 12 月 29 日开始, 并于 1998 年 1 月 4 日结束。最后三个星期的年份是 1998 年 1997 年日历年的天数。但是,如果 getFirstDayOfWeek()SUNDAY,那么 1998 年的第 1 周开始于 1998 年 1 月 4 日,结束于 1998 年 1 月 10 日; 1998 年的前三天是一周的一部分 1997 年的 53 个,他们的周年是 1997 年。

    使用更改后的模式,您将获得以下输出:

    The formatted string: Thu Sep 26 2013 01:32:09 +0530 (India Standard Time)
    The parsed date is: Thu Sep 26 2013 01:32:09 +0530 (India Standard Time)
    The parsed date from input is: Sun Sep 22 2013 20:03:46 +0530 (India Standard Time)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-03
      • 2021-06-22
      • 1970-01-01
      相关资源
      最近更新 更多