我有一个带有“错误”格式日期和时间的字符串,我需要将其转换为一个Date
对象,以便我可以使用SimpleDateFormat
和 current格式化它的内容Locale
。
但是,无论我如何尝试,我都无法让输出显示正确的时间,我从 PST 时间 (UTC-8) 转换为 GMT,但打印的时间太多了 +1 小时,GMT 只有 +7从(当前 PDT)时区。
我已经在两台 Android 设备上尝试了该代码,一台设置为 GMT,另一台设置为 CET,一个 Android 模拟器,并从命令行运行,它们都弄错了时间。(+1)
我在下面的代码中做错了什么?
String sourceSDFformatter = "MMM d, h:mm a Z";
String destSDFformatter = "EEEEE, MMMMM dd, HH:mm";
String dateString = "Mar 20th, 10:00 AM PST".replaceAll("st|nd|rd|th", "");
SimpleDateFormat sourceSDF = new SimpleDateFormat(sourceSDFformatter, Locale.US);
SimpleDateFormat destSDF = new SimpleDateFormat(destSDFformatter, Locale.UK);
TimeZone sourceTZ = TimeZone.getTimeZone("America/Los_Angeles");
TimeZone destTZ = TimeZone.getTimeZone("GMT");
sourceSDF.setTimeZone(sourceTZ);
destSDF.setTimeZone(destTZ);
Date myDate = sourceSDF.parse(dateString);
myDate.setYear(new Date().getYear());
System.out.println("Your Time: " + destSDF.format(myDate));
输出:
Your Time: Wednesday, March 20, 18:00
当我的预期输出是:Your Time: Wednesday, March 20, 17:00
.
我已经在java中将本地时区转换为GMT中尝试了SO答案,如果我更改它会完美运行TimeZone.getTimeZone("America/Los_Angeles")
,那么打印的时间提前+7小时是正确的。