2014-08-15 1 views
2

Я получаю неправильное значение часового пояса (IST) из следующего кода. Его от bugreportjava-программа сообщает о неправильном часовом поясе на linux (показывает IST для Европы/Дублина)

import java.util.*; 
import java.text.*; 
class simpleTest 
{ 
     public static void main(String args[]) 
     { 
      System.out.println("Simple test Josh "); 

      Date now = new Date(); 
      DateFormat df = DateFormat.getDateInstance(); 
       Calendar cal = Calendar.getInstance(); 
     System.out.println("\n TIME ZONE :"+ cal.getTimeZone().getDisplayName()); 
      long nowLong = now.getTime(); 
      String s = now.toString(); 
      System.out.println("Value of milliseconds since Epoch is " + nowLong); 
      System.out.println("Value of s in readable format is " + s); 

     } 
} 

С Дублин, зона неправильно. Он показывает IST

$ java -Duser.timezone=Europe/Dublin simpleTest 
Simple test Josh 

TIME ZONE :Greenwich Mean Time 
Value of milliseconds since Epoch is 1408095007238 
Value of s in readable format is Fri Aug 15 10:30:07 IST 2014 

Это один нормально

$ java -Duser.timezone=Europe/Helsinki simpleTest 
Simple test Josh 

TIME ZONE :Eastern European Time 
Value of milliseconds since Epoch is 1408095025866 
Value of s in readable format is Fri Aug 15 12:30:25 EEST 2014 

Где значение IST взялось?

Я проверил Os файлы, такие как/и т.д./LocalTime

bash-3.2# cd /etc 
bash-3.2# ls -lrt localtime 
lrwxrwxrwx 1 root root 33 Nov 16 2010 localtime -> /usr/share/zoneinfo/Europe/Dublin 

/и т.д./sysconfig/часы

bash-3.2# cd /etc/sysconfig/ 
bash-3.2# cat clock 
# The ZONE parameter is only evaluated by system-config-date. 
# The timezone of the system is defined by the contents of /etc/localtime. 
ZONE="Europe/Dublin" 
UTC=true 
ARC=false 
bash-3.2# pwd 
+0

http://stackoverflow.com/questions/6392/java-time-zone-is-messed-up – Jayan

+3

Где @JonSkeet и его удивительное знание часового пояса, когда он вам нужен. – Sinkingpoint

ответ

4

Irish Standard Time, который является правильным для часового пояса Дублин, сокращенно IST.

К сожалению, сокращения по часовой стрелке не уникальны, как вы можете видеть в this table - IST может быть разрешен (по крайней мере) двумя другими часовыми поясами. Сокращения временных зон are not part of the related ISO standard и их использование обычно не рекомендуется.

В общем, UTC timestamps следует отдать предпочтение при использовании нескольких временных зон. С UTC каждой стороне нужно отслеживать не более одного часового пояса, кроме своих собственных. Кроме того, UTC не влияет на методы DST, которые обычно являются источником путаницы даже для местоположений с одинаковыми longitude.

+1

Huh !. Я думал, что это неправильно, так как Индия Стандартное время = IST – Jayan

+0

Просто увидел этот стол. Никогда не думал так. Мы включаем время, которое на самом деле более полезно. – Jayan

+1

Если нет каких-либо условий для устранения некоторых альтернатив, сокращения по часовой стрелке бесполезны. Честно говоря, я предпочитаю UTC раз ... – thkala

Смежные вопросы