我有一个网络应用程序,如果客户端位于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服务中接收到这个字符串并尝试使用SimpleDateFormat将其解析为日期对象时,它假定我想表达的是:“这是UTC时间10点,而我位于UTC+0000时区”,因此它将其存储为UTC时间上午10:00,而不是上午09:00 UTC时间,这是从上午10:00英国夏令时(BST)转换过来的正确时间。
这是我的示例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
如何解决这个问题?