2016-12-06 11 views
1
私はこのコードを使用して、日付にタイムスタンプを変換しようとしている

に日付に変換されません:タイムスタンプが正しくJavaの

String str = "14799744000000800";//last four digit is time zone 
DateFormat timeZoneFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); 
timeZoneFormat.setTimeZone(TimeZone.getTimeZone("GMT-8")); 

Date time = new java.util.Date(Long.parseLong(str)); 
System.out.println(timeZoneFormat.format(time)); 

をしかし、それは'21 -03- 0時00分00秒印刷します'21/03-2016 00:00:00の代わりに

ご覧のとおり、年の部分は正しく変換されていません。これを修正するには?

+1

ミリ秒の値は間違いありませんか?私が見る限り、この変換は大丈夫です。 21-03-2016は1458518400000ミリ秒で、値14799744000000800がはるかに大きい – siarheib

+0

最後の4桁がこのようなタイムゾーンです1479974400000-0800 –

答えて

0

現在のミリ秒の値は1481007881541です。したがって、14799744000000800は本当に将来のようです。

編集 あなたの後のコメントによれば、文字列から最後の4桁を削除できます。

+0

最後の4桁がこのようなタイムゾーンです1479974400000-0800 –

+0

コードのアイデアは、エポックからの秒数であるLong値を受け取ります。日付は常にGMTです。異なるTZに表示されるのはその表示だけです –

関連する問題