当前位置: 首页 > 知识库问答 >
问题:

JAVA转换本地时间(GMT 8)到UTC时间

淳于健
2023-03-14

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

html:

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

Java:

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

即本地时间(GMT 8),我想将其转换为UTC字符串时间

例如:转换为-

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

共有2个答案

姚星宇
2023-03-14

java.time是现代Java日期和时间API。我建议我们将其用于日期和时间工作。它是Joda-Time的继任者,并于2014年推出Java1.8。它还在Threeten Backport中被反向移植到Java1.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表示。

如果要明确从哪个时区转换,而不是分区ID。systemDefault()使用类似ZoneId的内容。“亚洲/香港”)。最好以地区/城市格式提供相关的时区ID,而不仅仅是GMT偏移量。

为什么要使用外部库进行转换?Java语言时间是日期和时间的未来证明库。一旦转到Java 8、9、10、11、12、13、14、15、16或更高版本,请更改导入以使用内置Java。再测试一次,您的代码就是最先进的。请注意,关于转换为UTC的代码是如何明确的,发生了什么也不奇怪。Java语言和时间一起工作真是太好了。

  • Oracle教程:日期时间解释如何使用java.time.
  • Java规范请求(JSR)310,其中首先描述了java.time
  • Threeten Backport项目,将java.time反向移植到Java6和7(Threeten for JSR-310)。
  • Java8个API可通过脱糖
  • ThreeTenABP,Android版的Threeten Backport
  • 问题:如何在Android Project中使用ThreeTenABP,有非常透彻的解释。
  • 维基百科文章:ISO 8601
宰父深
2023-03-14

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

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

打印出:<代码>2021 01-08T01:36:29Z

 类似资料:
  • 问题内容: 我知道已经有很多关于将UTC时间/日期转换为本地时间/从本地时间转换为答案的帖子,但是没有帮助我弄清楚我的问题是什么。我的问题是:通过具有UTC时间戳,我如何获取本地DateTime?这就是我现在所拥有的,但这只是将时间戳转换为DateTime格式。 编辑:我将UTC时间戳保存在云中,以便每个设备(Android / iOS)都可以查询并将其转换为时区。 问题答案: 试试这个与我一起工

  • 问题内容: 我知道这个主题已被殴打致死,但在搜寻了这个问题几个小时之后,我不得不问。 我的问题:根据客户端应用程序(iphone)的当前时区对服务器上的日期进行计算。客户端应用程序以秒为单位告诉服务器,其时区距GMT的距离。然后,我想使用此信息对服务器中的日期进行计算。服务器上的日期都存储为UTC时间。 因此,在将UTC日期对象转换为该本地时区之后,我想获取其HOUR。 我目前的尝试: 变量小时和

  • 问题内容: 我有一个毫秒本地本地时间戳,我想将其转换为毫秒本地UTC时间戳。快速浏览一下文档,看起来像这样工作: 有一个更好的方法吗? 问题答案: 使用a 来获取本地纪元处的偏移量,然后将其添加到本地纪元时间戳中。

  • 问题内容: 我有一个UTC时区,例如: 还有一个pytz时区对象: 转换为给定时区的正确方法是什么? 问题答案: 我想我明白了: 这行代码首先将朴素的(不了解时区的) 对象转换为包含时区(UTC)的对象。然后,它使用该功能根据请求的时区调整时间。

  • 如何将Java对象从本地时间转换为UTC?这是我尝试过的: 时间总是以MT而非GMT显示。我想将日历以UTC存储在数据库中(我不关心时间的格式或显示)。

  • 我想使用moment.js将本地时间转换为等价的UTC。我相信我已经有了正确的方法,但它不会改变时间。 我在悉尼,澳大利亚+11,预计协调世界时将早11个小时。 在moment对象内部,isUTC标志从false变为true,但时间没有改变,我是不是打算为此使用一种不同的技术。 转换后