【问题标题】:joda-time giving wrong day when parsingjoda-time 在解析时给出错误的日期
【发布时间】:2013-06-15 04:45:19
【问题描述】:

当我运行以下命令时:

final DateTimeFormatter format = DateTimeFormat.forPattern("E, d MMM y HH:mm:ss Z");
final DateTime date = format.withLocale(Locale.US).parseDateTime("Fri, 15 May 2013 07:57:29 -0700");
System.out.println(date);

输出是:

2013-05-17T10:57:29.000-04:00

由于某种原因,它提前了 2 天。我希望它是:

2013-05-15T10:57:29.000-04:00

我做错了什么?

【问题讨论】:

    标签: java jodatime


    【解决方案1】:

    JodaTime 在解析时使用 day 字段。 2013 年 5 月的 17th 发生在星期五,因此是输出。你需要使用:

    DateTime date = 
       format.withLocale(Locale.US).parseDateTime("Wed, 15 May 2013 07:57:29 -0700");
    

    【讨论】:

    • 所以"Fri, 15 May 2013"Friday15 May 2013 之后还是之后?
    • JodaTime 调整它变成Fri, 17 May 2013
    • 是否在某处记录了星期五(星期几)的“优先级”高于 15 号(星期几)?
    • DateTimeFormatter 文档中没有具体内容。同样,SimpleDateFormat 中没有任何内容指定它在一天中使用日期字段进行非宽松日期解析。
    • Doh .. 这很明显。感谢您发现我的错误:-)
    猜你喜欢
    • 2014-04-08
    • 2020-12-25
    • 1970-01-01
    • 2011-04-29
    • 1970-01-01
    • 2014-08-20
    • 2010-11-22
    • 1970-01-01
    • 2013-05-23
    相关资源
    最近更新 更多