【问题标题】:How to format datetime in utc to local time format?如何将UTC中的日期时间格式化为本地时间格式?
【发布时间】:2015-09-03 00:49:25
【问题描述】:

我有一个日期时间对象,它的值是格式(通过断点)

dateTime = 2015-09-04T08:37:00.440-07:00

我正在尝试获取对应的当地时间。

我使用了"EEEE, MMM d 'at' hh:mm a"的格式。

dateTime.toString(format);

但它没有考虑到 -07:00 小时的偏移并回馈:

Friday, Sep 4 at 08:37 AM

预期值:Friday, Sep 4 at 01:37 AM

我错过了什么?

【问题讨论】:

  • 您是否尝试过使用DateTimeFormatter,用于example
  • 我通过使用 DateTime(java.util.date) 创建日期时间来解决它...现在对我有用...

标签: java datetime jodatime


【解决方案1】:

您要求通过调用withZone(DateTimeZone.getDefault()) 转换为本地(默认)时区。

DateTime dateTime = DateTime.parse("2015-09-04T08:37:00.440-07:00");
System.out.println(dateTime);
System.out.println(dateTime.toString("EEEE, MMM d 'at' hh:mm a"));

dateTime = dateTime.withZone(DateTimeZone.getDefault());
System.out.println(dateTime);
System.out.println(dateTime.toString("EEEE, MMM d 'at' hh:mm a"));

dateTime = dateTime.withZone(DateTimeZone.UTC);
System.out.println(dateTime);
System.out.println(dateTime.toString("EEEE, MMM d 'at' hh:mm a"));

输出

2015-09-04T08:37:00.440-07:00
Friday, Sep 4 at 08:37 AM

2015-09-04T11:37:00.440-04:00
Friday, Sep 4 at 11:37 AM

2015-09-04T15:37:00.440Z
Friday, Sep 4 at 03:37 PM

【讨论】:

  • 感谢您的回复....但是,这不是预期的 o/p...我想在输出前打印带有 -07:00 的字符串...星期五,九月4 上午 01:37 而不是 9 月 4 日星期五上午 08:37...
  • 你误解了-07:00的意思。它指定日期/时间适用于比 GMT/UTC 晚 7 小时的时区中的位置。如果您想要 UTC 时间,您添加 7 小时并获得15:37。如果您-07:00 的时区(以PDT 为例),则时间在您的 时区。如您所见,我在东海岸(EDT),所以我的时区是-04:00,时间是11:37 AM,比高出3个小时
  • 这里现在是10:37 PM (EDT),DateTime.now() 返回2015-09-02T22:37:01.134-04:00。我的时间,我的时区。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-30
  • 2021-10-14
相关资源
最近更新 更多