【发布时间】:2016-01-12 20:53:41
【问题描述】:
这是我正在使用的示例。
import java.util.*;
import java.text.*;
public class TimeZoneTest
{
public static final String UTC_ZONE = "UTC";
static String utcDateString = "01/11/2016 11:00:00";
public static void main (String [] args)
{
DateFormat df;
try{
df = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
System.out.println("Original Date : " + utcDateString);
df.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = df.parse(utcDateString);
System.out.println(" In its Date format : " + date.toString());
System.out.println(" In its GMT format : " + date.toGMTString());
System.out.println(" In its Local format : " + date.toLocaleString());
}
catch (ParseException ex)
{
System.out.println("Exception!!!!");
}
}
}
这是产生的输出。
Original Date : 01/11/2016 11:00:00
In its Date format : Mon Jan 11 06:00:00 EST 2016
In its GMT format : 11 Jan 2016 11:00:00 GMT
In its Local format : Jan 11, 2016 6:00:00 AM
当使用时间 11:00:00 并将 TimeZone 设置为 UTC 时,我期望作为本地时间(东部)表示的 11:00:00 然后将转换为 UTC,这将产生 16:00 :00。
相反,它似乎将字符串值 11:00:00 处理为 UTC 时间而不是本地时间,然后返回我的本地时间 06:00:00。
这是预期的结果吗? 设置时区时,是否应该将正在解析的时间 (11:00:00 ) 转换为该时区并生成 (16:00:00)? 或者 当您设置时区时,是否应该将正在解析的时间(11:00:00)视为在该时区并返回本地时间(06:00:00)?
【问题讨论】: