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时区的时间戳转换为我的时区。
我也想知道如何获得系统的当前时区,而不必说"美国/纽约"。
预先感谢!
我不确定我也完全理解您的问题,但这是我为您回答的最佳努力。
我假设您的日期是UTC时区中的字符串,并且您将日期作为系统(或本地)时区。
要这样做,只需将字符串" UTC"
添加到您的时间字符串中,然后将您的日期格式格式模式更改为" yyyy-mm-dd HH:MM:SS Z"。这里Z
是RFC 822时区。您也可以使用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
您还应该阅读此问题并回答有关显示日期