Ich habe eine Web-Anwendung, und wenn die Client-Seite (in Großbritannien, die in Zeitzone UTC + 0000) ich das Datum Parameter als String senden wie so:Java: Datum und Offset-Problem?
date = "2012-03-28 10:00:00 +0000" // this is meant to say "This is the date and time BST which is +0000 offset from UTC"
aber wenn ich erhalte diese Zeichenfolge in Mein Java-REST-Service und versuchen, es in ein Date-Objekt mit SimpleDateFormater zu parsen, es geht davon aus, dass das heißt: "Dies ist 10:00 Uhr UTC und ich bin in einer UTC + 0000 Zeitzone", so dass es als 10 : 00 AM UTC-Zeit anstelle von 09:00 AM UTC-Zeit, die die richtige Konversation von 10:00 AM BST ist (was +0000 ist).
hier ist mein Beispiel Java-Code:
String dateString = "2012-03-28 10:00:00 +0000";
Timestamp timestamp= null;
try{
DateFormat planningDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z");
Date date = planningDateFormat.parse(dateString);
timestamp = new Timestamp(date.getTime());
System.out.println("Time stamp value is: " + timestamp.getTime());
System.out.println("Date value after parse: " + date);
System.out.println("Time value passed in was: " + dateString);
}
catch(Exception e){}
die Ausgänge:
$ java TimeTest
Time stamp value is: 1332917100000
Date value after parse: Wed Mar 28 11:00:00 BST 2012
Time value passed in was: 2012-03-28 10:00:00 +0000
Wie kann ich um dieses Problem zu bekommen?
Ja ich weiß, wie UTC funktioniert, was ich versuche zu sagen ist, ich habe die Zeit in BST nicht in UTC. Ich sende es nicht als UTC, ich sende es 10 AM BST und möchte, dass JAVA meine 10:00 AM BST in 9:00 AM UTC umwandelt. –
@Mo .: Sie scheinen * nicht * zu wissen, wie UTC funktioniert, vorausgesetzt, Sie haben * mehrmals * in Ihrem Beitrag behauptet, dass das Vereinigte Königreich auf "UTC + 0000" steht, wenn wir * nicht * sind. BST ist * nicht * +0000. Das Vereinigte Königreich ist * keine * UTC + 0000 Zeitzone. Zeitzonen-Offsets geben einen Offset von UTC, nicht von "Standardzeit in Ihrer Zeitzone". –
Was ich mit BST meinte ist, dass meine Zeit im Moment die UK Zeit im Moment darstellt (10:00 Uhr Ortszeit, nicht 10:00 UTC) –