我想将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字符串时间
例如:转换到->2021-01-07t02:42
我搜索了很多资源,但仍然不知道怎么做。
2条答案
按热度按时间hc8w905p1#
在iso-8601格式中,您只需将时区偏移量附加到字符串,java.time.instant就知道如何处理它,如下所示:
打印出来:
2021-01-08T01:36:29Z
qyzbxkaa2#
java.time通过310后端口
time是现代的java日期和时间api。我建议我们在约会和工作时间使用它。它是joda time的继承者,并于2014年推出Java1.8。在threeten backport中,它还被后端口到Java1.6和1.7。使用threten backport,我们可以:
我在亚洲/上海时区的Java1.7上运行了这段代码(偏移量+08:00)。则输出为:
2021-01-07t02:42z
时间符合你的要求。它的单位是utc,由后面的
Z
.如果要明确表示从哪个时区转换,而不是
ZoneId.systemDefault()
使用类似ZoneId.of("Asia/Hong_Kong")
. 最好以地区/城市格式给出相关的时区id,而不仅仅是gmt偏移量。为什么要使用外部库进行转换?time是面向未来的日期和时间库。一旦您继续使用Java8、9、10、11、12、13、14、15、16或更高版本,请将导入内容更改为使用内置的java.time,再次测试,您的代码就是最新的。注意代码是如何显式转换为utc的,这并不奇怪。与java.time一起工作真是太好了。
链接
oracle教程:date time解释如何使用java.time。
java规范请求(jsr)310,其中
java.time
第一次被描述。三十后港工程
java.time
到Java6和Java7(jsr-310为310)。通过desugaring提供Java8+API
threetenabp,android版threeten backport
问:如何在android项目中使用threetenabp,有非常透彻的解释。
维基百科文章:iso 8601