Java 将来自已知时区的时间戳转换为系统';s时区 dateFormatterLocal=newsimpledateformat(“yyyy-MM-dd-HH:MM:ss”); dateFormatterLocal.setTimeZone(TimeZone.getTimeZone(“美国/纽约”); for(int i=0;i

Java 将来自已知时区的时间戳转换为系统';s时区 dateFormatterLocal=newsimpledateformat(“yyyy-MM-dd-HH:MM:ss”); dateFormatterLocal.setTimeZone(TimeZone.getTimeZone(“美国/纽约”); for(int i=0;i,java,timezone,Java,Timezone,我的当前代码没有将UTC时区中的时间戳转换为我的时区 我还想知道如何获取系统的当前时区,而不必在可能的情况下告诉它“美国/纽约” 提前谢谢 我也不确定我是否完全理解你的问题,但我会尽最大努力为你解答 我假设您有一个以UTC时区为单位的字符串形式的日期,并且希望该日期作为系统(或本地)时区 为此,只需将字符串“UTC”添加到时间字符串中,并将日期格式化程序模式更改为“yyy-MM-dd HH:MM:ss Z”。这里是Z。您还可以使用z,它是 因此,您的代码将变成: dateFormatterLoc

我的当前代码没有将UTC时区中的时间戳转换为我的时区

我还想知道如何获取系统的当前时区,而不必在可能的情况下告诉它“美国/纽约”


提前谢谢

我也不确定我是否完全理解你的问题,但我会尽最大努力为你解答

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

为此,只需将字符串
“UTC”
添加到时间字符串中,并将日期格式化程序模式更改为“yyy-MM-dd HH:MM:ss Z”。这里是
Z
。您还可以使用
z
,它是

因此,您的代码将变成:

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]));
}
为我打印新西兰标准时间,即当前时区

您还可以将
TimeZone.LONG
更改为
TimeZone.SHORT
以获取缩写版本,即我获取
NZST



此外,您还应该阅读有关显示日期的内容

我不确定我是否理解这个问题(但了解最新情况;)。如果不想指定时区,则需要在格式/
字符串
值中包含时区。如果无法更改原始值,可以在解析前将时区值附加到
字符串的末尾。。。
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));