2012-05-08 4 views
1

Этот код дал мне 09:40 (я нахожусь в Турции), но мое время уже 12:40 Я просмотрел много страниц для этого, но я не смог найти какое-либо решение. Что мне делать, чтобы исправить это?Dateformat is not return true time - 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); 

Кроме того, почему этот код дал 08:27, когда мое время 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

Похоже TimeZone вашей виртуальной машины Java не является правильным. Попробуйте явно устанавливая TimeZone Турции в SimpleDateFormat объекта, например:

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

Большое вам спасибо! Я знаю, что причина в том, что время в Турции, но я не нашел решение раньше. еще раз спасибо – Merve

1

Зонное вашей машины как-то неправильно. Обычно это что-то делает ОС (через региональные настройки), и JVM выбирает ее. Поэтому лучшим решением является установка правильных настроек в вашей ОС и после перезапуска приложения, вы должны получить правильное время. Это особенно удобно, если вы планируете использовать свое приложение в разных странах.

Однако, если вам действительно нужно, чтобы заставить TimeZone, есть два способа сделать это:

  1. сделать это на SimpleDateFormat: http://docs.oracle.com/javase/7/docs/api/java/text/DateFormat.html#setTimeZone(java.util.TimeZone)

  2. осилИТ глобально для всего приложения : TimeZone.setDefault(TimeZone.getTimeZone(...))