【发布时间】:2014-02-03 03:57:43
【问题描述】:
我正在尝试格式化日历对象以返回特定格式的时间。 但是,SimpleDateFormatter 忽略了 Calendar obj 的 TimeZone 和它自己的 TimeZone 属性,并进行了不必要的时间转换。我的电脑在 EST 中,我在“PST”中传递日历 obj。传入的时间是:Tue Jan 14 10:28:49,我期待返回 val 为“10:28:49 AM PST”。然而,返回的值是“07:28:49 AM PST”。当格式化程序 obj 设置为 PST 时,为什么要进行时区计算?另外,如何防止从 EST 到 PST 的 tz 转换?
代码如下:
public static String formatDateToString(Calendar cal) {
if (cal != null) {
TimeZone tz = cal.getTimeZone();
String tzId = tz.getID();**//"PST"**
Date date = cal.getTime();
String str = date.toString();**//"Tue Jan 14 10:28:49 EST 2014"**
final SimpleDateFormat sdFormatter = new SimpleDateFormat("hh:mm:ss a zzz");
sdFormatter.setTimeZone(TimeZone.getTimeZone(tzId));
String calStr = sdFormatter.format(cal.getTime());**//"07:28:49 AM PST"**
return calStr;
}
return null;
}
【问题讨论】:
标签: java datetime calendar timezone simpledateformat