2012-05-08 7 views
1

このコードは私に09:40(私はトルコに居住)ですが、今は12:40です 私はこれについて多くのページを見ていますが、私は解決策を見つけることができませんでした。 修正するにはどうすればよいですか?このコードは8時27分を与えた理由Dateformatがtrueを返していない - Java

  String DATE_FORMAT_NOW = "dd-MM-yyyy HH:mm:ss"; 
    Calendar cal = Calendar.getInstance(); 
    String timeZone = cal.getTimeZone().getDisplayName(); 
    System.out.println("timeZone is : " + timeZone); 
     System.out.println("Current Time in MiliSeconds : " + cal.getTimeInMillis()); 
    SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW); 
    String time=sdf.format(cal.getTime()); 
    System.out.println(time); 

また、私の時間は、それはあなたのJVMのタイムゾーンのように見える12時40

DateFormat formatterHourSecond = new SimpleDateFormat("HH:mm"); 
String saatStr = formatterHourSecond.format(tarih);  
System.out.println("Saat : " + saatStr); 
+1

返されたタイムゾーンは何ですか? –

+0

タイムゾーンはGMT + 00:00です。 – Merve

+0

これは、グリニッジ標準時 - トルコではなくイギリスでの時間です。 – Jon

答えて

2

が正しくないとき。明示的にこのように、SimpleDateFormatオブジェクトにトルコへTimeZoneを設定してみてください:あなたのマシンの

SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW); 
sdf.setTimeZone(TimeZone.getTimeZone("Turkey")); 
String time=sdf.format(cal.getTime()); 
+0

ありがとうございました!私は理由がトルコのtimeZoneだと知っていますが、私は以前解決策を見つけることができませんでした。再度、感謝します – Merve

1

タイムゾーンは何とか間違っています。通常、これはOSによって(地域設定によって)行われ、JVMがそれを選択します。したがって、最適な解決策は実際にはOSで正しい設定を行うことです。アプリケーションを再起動した後、正しい時刻を取得する必要があります。これは、異なる国でアプリケーションを実行する予定がある場合に特に優れています。 http://docs.oracle.com/javase/7/docs/api/java/text/DateFormat.html#setTimeZone(java.util.TimeZone

  • は、アプリケーション全体に対してグローバルに行います

    1. はSimpleDateFormatの上でそれを実行してください:あなたは本当にタイムゾーンを強制する必要がある場合

      しかし、それを行うには、2つの方法があります:TimeZone.setDefault(TimeZone.getTimeZone(...))

  • 関連する問題