我正在處理需要將UTC時間戳轉換爲其他區域特定時間戳的要求。下面是不同時區的列表。將UTC時間戳轉換爲其他時區特定時間
CET UTC+0100
CST UTC+0800
CST UTC-0600
EST UTC-0500
IST UTC+0530
MET-1METDST
SGT UTC+0800
SST-8
public static String convertUTCTimeStampToOtherZoneTimestamp(Timestamp timestamp,String timeZone){
String zoneSpecificTimeStamp="";
try {
DateFormat gmtFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
TimeZone zoneTime = TimeZone.getTimeZone(timeZone);
gmtFormat.setTimeZone(zoneTime);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String inputDateString = sdf.format(timestamp);
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
zoneSpecificTimeStamp=gmtFormat.format(sdf.parse(inputDateString));
} catch (ParseException e) {
e.printStackTrace();
return zoneSpecificTimeStamp;
}
return zoneSpecificTimeStamp;
}
上面的代碼是一樣EST,PST,IST時區,但在列表中的程序給錯誤的結果中提到的其他時區做工精細。請更新我的正確解決方案
這已被問了很多次。請先搜索。提示:您應該使用時區名稱,如「Europe/Paris」,而不是「CET」。 –
他其實是對的,同一地理位置在夏季和冬季有不同的時區。 – hoaz
如果您使用的是java 8,請嘗試使用zoneddate時間https://docs.oracle.com/javase/8/docs/api/java/time/ZonedDateTime.html – Maverick