当前位置: 首页 > 面试题库 >

使用时区与Joda解析日期

诸新霁
2023-03-14
问题内容

我有两个时间戳,它们以两种不同的格式描述同一时刻。

2010-10-03 18:58:072010-10-03T16:58:07.000+02:00

我用Joda-Time用两个不同的日期格式解析时间戳。最后,我想有两个DateTime对象,它们在同一时刻相同。

DateFormatter提供了几种控制时区和语言环境的方法,但我无法使其正常工作。

这是我想工作的代码:

    final String date1 = "2010-10-03 18:58:07"; // Europe/Berlin local time
    final DateTimeFormatter formatter1 = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
    final DateTime dateTime1 = formatter1.parseDateTime(date1);

    final String date2 = "2010-10-03T16:58:07.000+02:00"; // Europe/Berlin local time with time zone
    final DateTimeFormatter formatter2 = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
    final DateTime dateTime2 = formatter2.parseDateTime(date2);

    Assert.assertTrue(dateTime1.isEqual(dateTime2));

问题答案:

如果您的默认时间zome是Europe / Berlin,则2010-10-03 18:58:07对应于2010-10-03T16:58:07.000 +
00:00。

您可能会误解字符串表示形式中的时区字段。您的时间戳记2010-10-03T16:58:07.000 +
02:00表示“在与格林尼治标准时间+2小时的时区中是16:58:07),或换句话说,“现在是16 :58:07 in
Berlin“。我认为您期望它的意思是格林尼治标准时间16:58:07?



 类似资料:
  • 问题内容: 此代码段始终将日期解析为当前时区,而不是解析为字符串中的时区。 它输出: 而我期望: 有什么想法我做错了吗? 问题答案: 好吧,进一步Google搜索给了我自己的问题的答案:use ,如下所示: 这有效。

  • 问题内容: 我想使用joda库(在scala中,但应该与java相同)解析DateTime。 来源看起来像 在Java中,这看起来像 不幸的是,这不起作用,但会引发异常: 为什么不起作用?当然,我可以忽略“ CEST”部分,而只分析其余部分,但是有时在输入中“ CEST”可以用“ CET”代替,所以我不想忽略它。 问题答案: 问题是因为区域名称短而并非唯一。请参阅DateTimeFormatter

  • 这是我从服务器返回的日期格式: 4月05 2016 23:59:00星期二GMT-0700(PDT) 这是我到目前为止所拥有的:“EEE MMM dd yyyy HH: mm: ss'GMT'Z(zzz)” 哪些字符解析有困难?

  • 问题内容: 在我的客户中,我有以下代码: 这两条线接连地运行。我从不设置时区或手动设置,仅依靠从OS和本地系统读取的默认设置。 执行后,它们产生: 系统时区确实是Phoenix,而不是UTC。Joda如何正确而JDK如何错误? 编辑 :这是Windows 7 x64主机,JRE是1.6.22 x64。 编辑2 :不要尝试复制它。它只会在某些系统上失败,而不是在所有系统上失败(例如3k用户群中的几十

  • 问题内容: 我正在尝试解析格式的字符串 放入日期对象。我的代码如下: 但是我遇到了“解析错误”。我无法更改日期的输入格式,也无法将时区设置为静态值,因为此代码将在Andorid设备上运行。如何将这个字符串解析为date? 问题答案: 使用java.time框架(JSR 310),您可以执行以下操作: …打印: 2014-02-01T15:00:19 + 11:00 [澳大利亚/悉尼] 虽然我不确定

  • 我想在JavaScript中解析没有时区的日期。我试过: