2016-02-01 12 views
5

Pracuję w konwersji daty w java, ponieważ używam następującego fragmentu kodu do konwersji czasu UTC na format IST. Działa on poprawnie w lokalny, gdy go uruchomię, ale kiedy go wdrożyłem na serwerze, który nie konwertuje, wyświetla tylko czas utc. Jest tam jakaś konfiguracja po stronie serwera. Proszę mi pomóc.Konwersja czasu UTC do IST w java działa w trybie LOKALNYM, ale nie w SERWISU CHMURY

fragment kodu:

DateFormat sdf = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); 
    sdf.setTimeZone(TimeZone.getTimeZone("UTC")); 
    String pattern = "dd-MM-yyyy HH:mm:ss"; 
    SimpleDateFormat formatter; 
    formatter = new SimpleDateFormat(pattern); 

    try { 
     String formattedDate = formatter.format(utcDate); 
     Date ISTDate = sdf.parse(formattedDate); 
String ISTDateString = formatter.format(ISTDate); 
      return ISTDateString; 
} 
+2

Co dokładnie masz na myśli przez "IST" (indyjski standardowy czas, irlandzki standardowy czas, Izrael standardowy czas?); i jaka jest domyślna strefa czasowa maszyny JVM na serwerze? –

+0

Jaki jest typ 'utcDate'? Zakładam, że jest to 'java.util.Date'. –

+0

Twój kod nigdy nie konwertuje się do IST, dosłownie ustawiasz sdf na "UTC", a następnie analizujesz sformatowaną datę. – Paddez

Odpowiedz

2

Java Date obiekty są już/zawsze w UTC. Strefa czasowa to coś, co jest stosowane podczas formatowania do tekstu. A Date nie może (nie powinien!) Znajdować się w żadnej strefie czasowej innej niż UTC.

Cała koncepcja konwersji utcDate na ISTDate jest wadliwa.
(BTW. Zła nazwa konwencje Java mówi powinno być istDate)

Teraz, jeśli chcesz kod powrotu datę jako tekst w IST strefie czasowej, a następnie trzeba zażądać:

DateFormat formatter = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); 
formatter.setTimeZone(TimeZone.getTimeZone("Asia/Kolkata")); // Or whatever IST is supposed to be 
return formatter.format(utcDate); 
Powiązane problemy