以下是我用于将UTC转换为SGT的两种方法,但收效甚微。请帮助我将UTC转换为SGT。
List<String> list0 = new ArrayList<>();
List<String> list1 = new ArrayList<>();
public void FirstTradingTime() throws ParseException {
list0 .add("2018-05-10T05:56:35.557Z");
for(int i=0; i<list0 .size();i++) {
String FirstTime = list0 .get(i);
DateFormat pstFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
pstFormat.setTimeZone(TimeZone.getTimeZone("PST"));
Date date = pstFormat.parse(String.valueOf(FirstTime));
DateFormat utcFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
utcFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
list1 .add(utcFormat.format(date));
}
System.out.println("FirstTradingTime "+list1 ;
}
上面的方法获取我的输出:[2018-05-10 12:56:35.557]
我的预期输出是:2018-05-10 13:56:35.557
List<String> list2 = new ArrayList<>();
List<String> list3 = new ArrayList<>();
public void FirstTradingTime() throws ParseException {
list2 .add("2018-05-10T05:56:35.557Z");
for (int i = 0; i < list2 .size(); i++) {
String Str = list2 .get(i);
Instant timestamp = Instant.parse(Str);
ZonedDateTime SGTtime = timestamp.atZone(ZoneId.of("Singapore"));
list3 .add(String.valueOf(SGTtime));
System.out.println(list3);
}
}
上述方法获取了我的输出:[2018-05-10T13:56:35.557 + 08:00 [新加坡]]
预期输出:2018-05-10 13:56:35.557
最佳答案
错误出在TimeZone.getTimeZone("SGT")
中,因为id SGT
不存在。该时区的ID为Asia/Singapore
,您可以通过TimeZone.getTimeZone("Asia/Singapore")
来获取。
试试这个:
DateFormat utcFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
utcFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
Date utcDate = utcFormat.parse("2018-05-10T05:56:35.557");
DateFormat sgtFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
sgtFormat.setTimeZone(TimeZone.getTimeZone("Asia/Singapore"));
String sgtString = sgtFormat.format(utcDate);
关于java - 如何将UTC转换为SGT,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50270051/