我想获取东部标准时间/ 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());

07-25 22:14
查看更多