我想获得东部标准时间/东部时间,但它会继续显示我当前的时间...... 知道我做错了吗?
DateFormat format = new SimpleDateFormat("yyyy.MM.dd G 'at' HH:mm:ss z");
TimeZone utc = TimeZone.getTimeZone("America/New_York");
GregorianCalendar gc = new GregorianCalendar(utc);
Date now = gc.getTime();
String strDateString = format.format(now);
答案 0 :(得分:2)
Date
类旨在反映协调世界时(UTC),因此它不反映您在GregorianCalendar
中使用的时区。默认情况下,SimpleDateFormat
使用系统默认时区,如果要覆盖它,则应明确执行此操作:
DateFormat format = new SimpleDateFormat("yyyy.MM.dd G 'at' HH:mm:ss z");
TimeZone la = TimeZone.getTimeZone("America/Los_Angeles");
format.setTimeZone(la);
另一个选择是切换到Joda Time库:
DateTimeZone la = DateTimeZone.forTimeZone(TimeZone.getTimeZone("America/Los_Angeles"));
DateTimeFormat.forPattern(dateTimeFormat).withZone(la).print(System.currentTimeMillis());