gpt4 book ai didi

java - 日期 : setTimeZone not detected

转载 作者:太空宇宙 更新时间:2023-11-03 13:39:27 25 4
gpt4 key购买 nike

我正在尝试将以毫秒为单位的日期转换为日期并获取时间。

我有这段代码:

 long yourmilliseconds = Long.parseLong(model_command.getTime());
Date resultdate = new Date(yourmilliseconds);

当我调试并查看日期时,它给出的日期早了 2 小时。它只在模拟器上给出这个问题(它可能不是在本地时间编程的)。我想解决此问题以确保我始终在 TimeZone GTM+02 中获得时间,但我不知道如何具体说明。

我试过这样的:

    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
long yourmilliseconds = System.currentTimeMillis();
Date resultdate = new Date(yourmilliseconds);
format.setTimeZone(TimeZone.getTimeZone("GTM+02"));
String test = format.format(resultdate).toString(); /**DATE**/

但是行:format.setTimeZone(TimeZone.getTimeZone("GTM+02"));
似乎被忽略了,它仍然给出了错误的时间

有人可以帮忙吗?谢谢

最佳答案

SimpleDateFormat 是一种使用来自 java 8 的 ZonedDateTimeInstant

的传统方法
OffsetDateTime i = Instant.ofEpochMilli(yourmilliseconds)
.atOffset(ZoneOffset.ofHours(2));

String dateTime = i.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); //2019-07-26 18:01:49

但是,在大多数情况下,比指定偏移量更好的方法是以地区/城市格式指定时区,例如欧洲/布鲁塞尔:

ZonedDateTime i = Instant.ofEpochMilli(yourmilliseconds)
.atZone(ZoneId.of("Europe/Brussels"));

在 26 以下的 Android API 级别上,您需要 ThreeTenABP为此,现代解决方案起作用了。看这个question: How to use ThreeTenABP in Android Project以获得详尽的解释。

关于java - 日期 : setTimeZone not detected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57223394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com