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

如何以JAVA中的格式“2018-12-10T13:34:43.5107621-05:00”获取时间戳,java,timestamp,Java,Timestamp,我想通过JAVA 7以这种格式获取当前时间2018-12-10T13:34:43.5107621-05:00 我使用的是EST时区。如果EST指的是北美东部时间标准或当前使用的夏时制: final ZoneId zone = ZoneId.of("America/New_York"); OffsetDateTime now = OffsetDateTime.now(zone); String currentTimeString = now.toString();

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


我使用的是EST时区。

如果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);
    final ZoneId zone = ZoneId.of("America/Coral_Harbour");
其余的和以前一样

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

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

    final ZoneOffset offset = ZoneOffset.ofHours(-5);
    OffsetDateTime now = OffsetDateTime.now(offset);
    final ZoneId zone = ZoneId.of("America/Coral_Harbour");
您要求的格式是国际标准ISO 8601。现代java日期和时间API java.time的类通常通过其toString方法生成这种格式

Java7中是否存在ZoneId

编辑:您必须添加它。ZoneId是java.time的一部分,java.time是在Java8中引入的现代java日期和时间API,它还向后移植到Java6和Java7。因此,当使用Java7时,使用下面的链接将ThreeTen Backport添加到您的项目中

链接 解释如何使用java.time。 ,其中首次描述了java.time。 ,java.time的后端口到JSR-310的Java6和Java7。 ,Android版Three Ten Backport ,解释得非常透彻。
我可以猜出其他字段是什么,但5107621包含什么信息?如果您使用的是Java 7,您可以选择使用SimpleDataFormat和适当的模式或第三方库,如Joda time。对于Java8,推荐的方法是使用DateTimeMatter。详细信息见相应的Javadoc。看看他们!阅读:@Paul.F-G这是相反的转换,但可能或多或少有帮助。我相信搜索会带来更多有用的问题和网页。@Torben格式是。.5107621是秒的分数,尽管您可能无法获得7位小数的精度。