Android获得当前东部标准时间

时间:2014-04-23 14:31:06

标签: java android simpledateformat android-date

我想获得东部标准时间/东部时间,但它会继续显示我当前的时间...... 知道我做错了吗?

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);

1 个答案:

答案 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());