在java中生成UTC时间

Boo*_*ean 5 java datetime date

我想将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();
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 9

您还需要为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);
Run Code Online (Sandbox Code Playgroud)

虽然如此,我个人会建议使用Joda Time,它总体上更有能力.如果你愿意,我很乐意把你的例子翻译成Joda Time.

另外,我看到你正在返回calendar.getTime()- 这finalTime与你计算它后立即返回相同.

最后,只是抓住ParseException并继续进行,好像它没有发生是一个非常糟糕的主意.我希望这只是示例代码,它并不反映您的真实方法.同样地,我假设你真的会解析其他一些文本 - 如果你不是,那么正如Eyal所说,你应该直接调用方法Calendar.(或者,再次使用Joda Time.)