2016-06-10 4 views
0

Ich habe einen Zeitstempel in der Zeichenkette, der in der UTC-Zeitzone ist, ich möchte ihn in der UTC-Zeitzone mit DateTime in der joda-Zeitbibliothek lesen.Zeitstempel in UTC als UTC-Zeit mit DateTime-Klasse lesen joda time library

. Beispiel:

String utcTs = "2016-06-01T14:46:22.001Z"; 

, wenn ich unter Anw versuchen, ist es Datetime zu lesen und wo auch immer die Anwendung auf servertimezone Umwandlung läuft !!

Gibt es eine Möglichkeit, die DateTime den String Zeitstempel als UTC lesen kann?

Mein Anwendungsserver ist in CST, und wenn das Datum mit SOP stmt wie unten gedruckt wird, beobachte ich CST-Zeit statt UTC!

System.out.println(dtUtcTs) ==> gibt mir Datum im Server, wo die Anwendung läuft !!

Vielen Dank !!

import org.joda.time.DateTime; 

public class TestClass { 

public static void main(String[] args) { 

String utcTs = "2016-06-01T14:46:22.001Z"; 
DateTime dtUtcTs = new DateTime(utcTs); 

System.out.println(dtUtcTs) 

} 
} 

unten ist der Ausgang i sehen, meine Anwendungsserver in CST Zone ist

2016-06-01T09:46:22.001-05:00 

mit joda Zeit Version 2.9.1

+0

http://joda-time.sourceforge.net/apidocs/org/joda/time/DateTime.html#DateTime%28java.lang.Object,%20org.joda.time.DateTimeZone%29 –

+0

@ 4castle eine DateTime ** hat ** eine Zeitzone. Das joda-Äquivalent eines Java-Util-Datums ist ein Instant. –

+0

Sind Sie sicher, dass Ihr Text tatsächlich ein 'Z' am Ende hat? Ich würde erwarten, dass es in Ordnung ist, und es funktioniert auf meiner Maschine. –

Antwort

0

Sie können nur die Überlastung verwenden der DateTime Konstruktor, der eine DateTimeZone:

nimmt

Eine andere Option ist die Verwendung eines , so dass Sie genau das Format, das Sie erwarten, und die gewünschte Zeitzone angeben können.

import org.joda.time.*; 
import org.joda.time.format.*; 

public class Test { 
    public static void main(String[] args) { 
     String text = "2016-06-01T14:46:22.001Z"; 
     DateTime dt = ISODateTimeFormat.dateTime() 
      .withZone(DateTimeZone.UTC) 
      .parseDateTime(text); 
     System.out.println(dt); 
    } 
}