【发布时间】:2012-03-29 12:11:10
【问题描述】:
我有一个 Web 应用程序,如果客户端(在英国处于 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 时区”,因此它将其存储为 UTC 时间上午 10:00 而不是 UTC 时间上午 09:00,这是从 BST 上午 10:00 开始的正确对话(即 +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
我该如何解决这个问题?
【问题讨论】:
标签: java date simpledateformat