我尝试下面的方法和搜索在网络找到这个解决方案,但没有运气:寻找解决方案,用于IST将字符串转换成PST:字符串转换为日期在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 这里是出放:
星期二4月18日18时58分09秒IST 2017年 星期二4月18日18时58分09秒IST 2017年
我在这里尝试了另一个选项我看到它甚至是showi纳克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;
}
OUT PUT: 转换日期:星期二4月18日6时28分09秒IST 2017年
是否有人可以在此帮助:我发现很多解决方案将IST日期时间转换为PST字符串,但没有将IST/EST日期转换为PST日期。 正如我上面提到,我们可以格式化为一个字符串,但我期待的转换回日期的例子
您正在打印Date.toString()的结果。不要这样做。 “Date”对象不具有*时区 - 它只是一个实例。 'convertFromOneTimeZoneToOhter'方法在其整体目的上存在根本性缺陷。使用'SimpleDateFormat'指定格式化所需的时区。 –
你有没有考虑过使用更好的日期/时间API? (因为'java.util.Date'对于你所需要的很糟糕 - 实际上它很糟糕)。对于Java <= 1.7,请使用[Joda-Time](http://www.joda.org/joda-time/)或[ThreeTen backport](http://www.threeten.org/threetenbp/),以及java> = 1.8,使用'java.time'类。花一些时间来学习这些,这是完全值得的。 – 2017-04-18 13:47:19
@JonSkeet,我使用SimpleDateFormat,但我可以将其转换为只字符串。我的要求是将日期IST转换为日期PST。 – user7076183