4

在创建 Date 对象期间我遇到了一个奇怪的问题。我有以下代码将日期的时区设置为 UTC。在解析语句之前,我看到 sdfDate 的时区为 UTC,但在解析语句之后,我看到 punchDate 具有值:Sat Mar 30 01:00:00 CET 2013,我相信这来自我的系统。但是我如何确保即使在解析之后时区也保持不变。

Date punchDate = null;
Date punchTime = null;

SimpleDateFormat sdfDate = new SimpleDateFormat("dd.MM.yyyy");
SimpleDateFormat sdfTime = new SimpleDateFormat("HH:mm:ss");

    try
    {
        sdfDate.setTimeZone(TimeZone.getTimeZone("UTC"));
        sdfTime.setTimeZone(TimeZone.getTimeZone("UTC"));
        punchDate = sdfDate.parse(arg1);
        punchTime = sdfTime.parse(arg2);
    }
    catch (ParseException pe)
    {
        System.out.println("Parse exception " +pe.getMessage());
    }

我的要求基本上是我需要从字符串输入创建一个日期对象,但时区应保持 UTC。

4

2 回答 2

3
于 2017-09-04T00:43:23.863 回答
0

您的日期对象将与您的本地系统时间相同。您已经创建了具有本地时区的本地日期对象,并将转换后的(UTC)时区分配给本地。

Date punchDate = null;
Date punchTime = null;

所以你的日期值保持不变,但它显示在不同的时区值。

于 2015-09-22T09:46:59.440 回答