有以下信息:
- 日期(“2013-08-30 07:05:25”)
- 时区(“欧洲/莫斯科”)
我的应用程序从某个服务器获取此信息,我需要将此日期/时间转换为当前用户的时区。我知道我应该使用 DateFormat 和 TimeZone API,但我不明白如何。请给我一条建议或一些代码。谢谢。
下面的代码将为您工作并参考这个堆栈问题 for timezones-in-java:
Calendar cal = Calendar.getInstance();
cal.setTimeZone(TimeZone.getTimeZone("Europe/Moscow"));
cal.setTime(new Date());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a");
Date resultdate = new Date(cal.getTimeInMillis());
sdf.setTimeZone(TimeZone.getTimeZone("Europe/Moscow"));
System.out.println("String date:"+sdf.format(resultdate));
try {
System.out.println("Date:"+sdf2.parse(sdf.format(resultdate)));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
输出
String date:2013-08-31 06:25:54 PM
Date:Sat Aug 31 18:25:54 IST 2013