我尝试了以下方法并在 Web 中搜索以找到解决方案,但没有成功:寻找将 IST 中的字符串转换为 PST 的解决方案:
String string = new Date().toString();
System.out.println(string);
SimpleDateFormat dt = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy");
dt.setTimeZone(TimeZone.getTimeZone("PST"));
Date D = dt.parse(string);
System.out.println(""+ D);
即使我将时区设置为 PST,我也会看到 IST 中的内容 这是输出:
2017 年 4 月 18 日星期二 18:58:09 IST 4 月 18 日星期二 18:58:09 IST 2017
我在这里尝试了另一个选项,我看到它甚至显示了 PST 时间,但我看到下面的输出有点令人困惑:
public static Date convertFromOneTimeZoneToOhter(Date dt,String from,String to ) {
TimeZone fromTimezone =TimeZone.getTimeZone(from);//get Timezone object
TimeZone toTimezone=TimeZone.getTimeZone(to);
long fromOffset = fromTimezone.getOffset(dt.getTime());//get offset
long toOffset = toTimezone.getOffset(dt.getTime());
//calculate offset difference and calculate the actual time
long convertedTime = dt.getTime() - (fromOffset - toOffset);
Date d2 = new Date(convertedTime);
return d2;
}
输出: 转换日期:2017 年 4 月 18 日星期二 06:28:09 IST
有人可以帮忙解决这个问题吗:我找到了很多将 IST 日期时间转换为 PST 字符串的解决方案,但没有找到将 IST/EST 日期转换为 PST 日期的解决方案。 正如我上面提到的,我们可以格式化为字符串,但我正在寻找转换回日期的示例
最佳答案
您应该研究一下 Java 8 直接处理时区的新 Date API
// Get the current date and time
ZonedDateTime date1 = ZonedDateTime.parse("2007-12-03T10:15:30+05:30[Asia/Karachi]");
System.out.println("date1: " + date1);
ZonedDateTime zonedDateTime = ZonedDateTime.now();
System.out.println("Zoned Date Time: " + zonedDateTime);
ZoneId id = ZoneId.of("Europe/Paris");
System.out.println("ZoneId: " + id);
ZoneId currentZone = ZoneId.systemDefault();
System.out.println("CurrentZone: " + currentZone);
打印:
date1: 2007-12-03T10:15:30+05:00[Asia/Karachi]
Zoned Date Time: 2017-04-18T09:52:09.045-04:00[America/New_York]
ZoneId: Europe/Paris
CurrentZone: America/New_York
关于java - 将 EST 中的字符串转换为 PST 中的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43473902/