1

このコードは私に09:40(私はトルコにいます)を与えました、しかし私の時間は今12:40です私はこれのために多くのページを調べました、しかし私は解決策を見つけることができませんでした。それを修正するにはどうすればよいですか?

            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); 

また、私の時間が12:40のときにこのコードが08:27を与えた理由

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

2 に答える 2

2

JVMのタイムゾーンが正しくないようです。次のように、オブジェクトでTimeZoneトルコに明示的に設定してみてください。SimpleDateFormat

SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW);
sdf.setTimeZone(TimeZone.getTimeZone("Turkey"));
String time=sdf.format(cal.getTime()); 
于 2012-05-08T09:51:56.060 に答える
1

マシンのタイムゾーンがどういうわけか正しくありません。通常、これはOSによって(地域設定を介して)行われるものであり、JVMがそれを取得します。したがって、最善の解決策は、実際にはOSで正しい設定を設定することであり、アプリケーションを再起動した後、正しい時刻を取得する必要があります。これは、アプリケーションをさまざまな国で実行することを計画している場合に特に適しています。

ただし、本当にTimeZoneを強制する必要がある場合は、次の2つの方法があります。

  1. SimpleDateFormatで実行します:http ://docs.oracle.com/javase/7/docs/api/java/text/DateFormat.html#setTimeZone(java.util.TimeZone )

  2. アプリケーション全体に対してグローバルに実行します:TimeZone.setDefault(TimeZone.getTimeZone(...))

于 2012-05-08T09:55:46.840 に答える