public static void main(String[] args) {
String opDate = "Tue Jan 03 00:00:00 MSK 2006";
String date = convertDate(opDate, "yyyyMMdd");
System.out.println("opDate: " + opDate);
System.out.println("date: " + date);
}
public static String convertDate(String opDate, String dateFormat) {
Date date = new Date();
// Mon Jan 02 00:00:00 MSK 2006
SimpleDateFormat dateParser = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
try {
date = dateParser.parse(opDate);
} catch (Exception e) {
System.out.println("exception = " + e.toString());
}
SimpleDateFormat df = new SimpleDateFormat(dateFormat);
df.setTimeZone(TimeZone.getTimeZone("Russia/Moscow"));
String strDate = df.format( date.getTime() );
return strDate.trim();
}
Run Code Online (Sandbox Code Playgroud)
出:
opDate:Tue Jan 03 00:00:00 MSK 2006
日期:20060102
为什么它会在1月02日返回?
问题是获取"Russia/Moscow"时区.正确的zoneinfo ID是"Europe/Moscow".更改ID,问题就消失了:
df.setTimeZone(TimeZone.getTimeZone("Europe/Moscow"));
Run Code Online (Sandbox Code Playgroud)
遗憾的是,TimeZone.getTimeZone("random rubbish")返回UTC时区而不是让你以某种方式知道它已被破坏.
| 归档时间: |
|
| 查看次数: |
266 次 |
| 最近记录: |