gpt4 book ai didi

java - 在java中生成UTC时间

转载 作者:搜寻专家 更新时间:2023-10-31 08:30:04 25 4
gpt4 key购买 nike

我想将 Java 中 01/01/2100 的 UTC 时间设置为“2100-01-01 00:00:00”。我收到“2100-01-01 00:08:00”。任何想法,如何纠正这个问题。

public Date getFinalTime() {
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"));

DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
Date finalTime = null;

try
{
finalTime = df.parse("01/01/2100");
} catch (ParseException e)
{
e.printStackTrace();
}

calendar.setTime(finalTime);
return calendar.getTime();
}

最佳答案

您还需要为 SimpleDateFormat 指定时区 - 当前正在解析午夜本地时间,最终为世界标准时间上午 8 点。

TimeZone utc = TimeZone.getTimeZone("UTC");
Calendar calendar = Calendar.getInstance(utc);

DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
df.setTimeZone(utc);
Date finalTime = null;

try
{
finalTime = df.parse("01/01/2100");
} catch (ParseException e)
{
e.printStackTrace();
}

calendar.setTime(finalTime);

一如既往,我个人建议使用 Joda Time这通常更有能力。如果您愿意,我很乐意将您的示例翻译成 Joda Time。

此外,我看到您正在返回 calendar.getTime() - 这与在您计算完后立即返回 finalTime 是一样的。

最后,只捕获一个 ParseException 并当它没有发生时继续运行是一个非常糟糕的主意。我希望这只是示例代码,并不能反射(reflect)您的真实方法。同样,我假设您真的将解析一些其他文本 - 如果您不是,那么正如 Eyal 所说,您应该直接调用 Calendar 上的方法。 (或者,再次使用 Joda Time。)

关于java - 在java中生成UTC时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3366356/

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