如何在JAVA中以这种格式“ 2018-12-10T13:34:43.5107621-05:00”获取时间戳

时间:2019-05-06 12:24:17

标签: java timestamp

我想通过JAVA 7以这种格式“ 2018-12-10T13:34:43.5107621-05:00”获取当前时间。

我正在使用EST时区。

1 个答案:

答案 0 :(得分:0)

如果在EST之前是指北美东部时间(当前使用的标准时间或夏令时):

    final ZoneId zone = ZoneId.of("America/New_York");
    OffsetDateTime now = OffsetDateTime.now(zone);
    String currentTimeString = now.toString();
    System.out.println(currentTimeString);

我刚才运行此代码段时,输出为:

  

2019-05-08T04:05:05.303999-04:00

如果在EST之前,您指的是北美东部时间标准时间,而不考虑每年的时间,即始终为-05:00(例如,在努纳武特和金塔纳罗奥州使用的时间):

    final ZoneOffset offset = ZoneOffset.ofHours(-5);
    OffsetDateTime now = OffsetDateTime.now(offset);

其余与以前一样。

  

2019-05-08T03:10:22.788736-05:00

如果指定的时区有意义,请使用与第一个代码段相同的方式来使用它,例如:

    final ZoneId zone = ZoneId.of("America/Coral_Harbour");

您要求的格式是国际标准ISO 8601。 Java.time(现代Java日期和时间API)类通常通过其toString方法产生这种格式。

  

JAVA 7中是否存在ZoneId?

编辑:您必须添加它。 ZoneId是Java.time的一部分,它是Java 8中引入的现代Java日期和时间API,并且也向后移植到Java 6和7。因此,在使用Java 7时,请使用下面的链接向您的项目中添加ThreeTen Backport。 >

链接