我想获取东部标准时间/ EST当前时间,但它会继续显示我的当前时间...
知道我在做什么错吗?
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);
最佳答案
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时间库:
DateTimeZone la = DateTimeZone.forTimeZone(TimeZone.getTimeZone("America/Los_Angeles"));
DateTimeFormat.forPattern(dateTimeFormat).withZone(la).print(System.currentTimeMillis());