У меня есть веб-приложение, и если на стороне клиента (в Великобритании, которая находится в часовом поясе UTC + 0000), я отправляю параметр даты в виде строки примерно так:
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"
, но когда я получаюэта строка в моем сервисе Java REST и попытка разобрать ее в объект даты, используя SimpleDateFormater, она предполагает, что я говорю: «это 10:00 UTC и я нахожусь в часовом поясе UTC + 0000», поэтому он хранитэто время 10:00 утра UTC вместо времени 09:00 утра UTC, которое является правильным разговором с 10:00 утра BST (что составляет +0000).
вот мой пример кода Java:
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){}
, который выводит:
$ 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
Как обойти эту проблему?