将来自已知时区的时间戳转换为系统的时区

时间:2014-01-20 01:42:20

标签: java timezone

dateFormatterLocal = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
dateFormatterLocal.setTimeZone(TimeZone.getTimeZone("America/New York"));
for (int i = 0; i < list.length; i++) {
    timeStampArrayList.add(dateFormatterLocal.parse(list[i]));
}

我当前的代码没有将已知在UTC时区的时间戳转换为我的时区。

我还想知道如何获得系统的当前时区,而不是必须告诉它“美国/纽约”。

提前致谢!

1 个答案:

答案 0 :(得分:1)

我不确定我是否完全理解你的问题但这是我尽力为你解答的问题。

我假设您有一个以UTC时区为字符串的日期,并且您希望将日期作为系统(或您的本地)时区。

要执行此操作,只需将字符串" UTC"添加到时间字符串中,并将日期格式化程序模式更改为“yyyy-MM-dd HH:mm:ss Z”。此处ZRFC 822 time zone。您也可以使用z String timezoneOffset = " UTC"; dateFormatterLocal = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z"); dateFormatterLocal.setTimeZone(TimeZone.getTimeZone("America/New York")); for (int i = 0; i < list.length; i++) { timeStampArrayList.add(dateFormatterLocal.parse(list[i] + timezoneOffset )); }

所以你的代码会变成:

TimeZone timeZone = Calendar.getInstance().getTimeZone();
System.out.println(timeZone.getDisplayName(false, TimeZone.LONG));

然后应该将日期解析为从提供的时区字符串转换的格式化程序的时区。


您可以执行此操作以获取系统当前时区

New Zealand Standard Time

为我打印TimeZone.LONG - 这是当前时区。

您也可以将TimeZone.SHORT更改为NZST以获取缩写版本,即我获得{{1}}


另外,您应该阅读有关显示日期的General time zone