在Java中生成UTC时间
我想将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指定时区-当前正在解析 当地时间 午夜,该 时间 以UTC上午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
并继续进行就好像没有发生是一个非常糟糕的主意。我希望这只是示例代码,不会反映您的真实方法。同样,我假设您
实际上 将在解析其他文本-如果不是,则正如Eyal所说,您应该直接调用方法Calendar
。(或者再次使用Joda Time。)
以上是 在Java中生成UTC时间 的全部内容, 来源链接: utcz.com/qa/403127.html