【发布时间】:2017-06-19 04:46:43
【问题描述】:
这里是示例代码
public class DateFormatSampleCode {
public static void main(String[] args) throws ParseException {
DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
Calendar cal = Calendar.getInstance();
cal.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles"));
cal.setTime(sdf.parse("2016-03-12T02:00:00-0800"));
sdf.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles"));
System.out.println(sdf.format(cal.getTime()));
cal.add(Calendar.DATE, 1);
System.out.println(sdf.format(cal.getTime()));
}
}
答案在这里
“2016-03-12T01:00:00-0800”
,但在我看来应该是“
2016-03-12T03:00:00-0700
"。
【问题讨论】:
-
如果在添加日期后重新设置时区怎么办?另外,我推荐
java.time,而不是使用Calendar。 -
@OleV.V.:谢谢,在 Java 7 之前,我们可以增加几小时而不是几天。从 java8 我们有 ZonedDateTime 和 LocalDateTime。
-
一般最佳实践。对于 Java 8,请使用
java.time。对于 Java Joda-Time。恕我直言,试图解决导致这些改进必要性的边缘情况是不值得的。 -
@OleV.V. - 哈哈。语言太多了! :) 已修复。