有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

html JAVA将本地时间(GMT+8)转换为UTC时间

我想将datetime local从html转换为UTC时间:

html:

<label>Start Time:</label><input type="datetime-local" name="start_time" />

爪哇:

request.getParameter("start_time") // print out ex:2021-01-07T10:42

这是当地时间(GMT+8),我想把它转换成UTC字符串时间

例如:转换为->;2021-01-07T02:42

我搜索了很多资源,但仍然不知道该怎么做


共 (2) 个答案

  1. # 1 楼答案

    在ISO-8601格式中,您只需将时区偏移量附加到字符串和java。时间Instant知道如何这样处理:

    Instant result = Instant.parse("2021-01-08T09:36:29+08:00");
    System.out.println(result);
    

    这个打印出来: 2021-01-08T01:36:29Z

  2. # 2 楼答案

    爪哇。时间过了三十分钟

    爪哇。时间是现代的Java日期和时间API。我建议我们在约会和时间工作中使用它。它是Joda Time的继任者,于2014年推出了Java1.8。在Three Ten Backport中,它还被后端口移植到Java 1.6和1.7。使用ThreTen Backport,我们可以:

        String startTime = "2021-01-07T10:42";
        OffsetDateTime utcTime = LocalDateTime.parse(startTime)
                .atZone(ZoneId.systemDefault())
                .toOffsetDateTime()
                .withOffsetSameInstant(ZoneOffset.UTC);
        System.out.println(utcTime);
    

    我在亚洲/上海时区的Java1.7上运行了这段代码(偏移量+08:00)。那么输出是:

    2021-01-07T02:42Z

    时间符合你的要求。它以UTC为单位,由后面的Z表示

    如果您想明确表示从哪个时区转换,请使用类似ZoneId.of("Asia/Hong_Kong")的内容,而不是ZoneId.systemDefault()。最好以地区/城市格式给出相关的时区ID,而不仅仅是GMT偏移量

    为什么要使用外部库进行转换?JAVA时间是日期和时间的未来证明库。一旦您转到Java 8、9、10、11、12、13、14、15、16或更高版本,请将导入更改为使用内置Java。一次又一次的测试,你的代码是最先进的。请注意,关于转换为UTC的代码是如何明确的,这并不奇怪。JAVA与时间共事真是太好了

    链接