为了给您一个概述,我们有一个MDB应用程序,我们在该应用程序上全天接收事务。提要中的一列是ddmmyyyy hhmiss格式的日期。我们试图通过SimpleDateFormat (java api)来解析它,这样我们就可以将字符串解析为date对象,以便插入到表中。
发生的情况是,在某些情况下,我的约会被移到了以前的日期。据观察,它已经后退了5-6个小时,导致交易成为BVT,尽管它不是。例如:其中一笔交易在格林威治时间9月24日上午12:01到达,但在表中插入的时间是9月23日下午7:30
我还希望您注意到服务器在芝加哥。那么,由于伦敦和芝加哥之间几乎有5-6个小时的时差,它是否正在考虑服务器时间?
代码片段如下:
SimpleDateFormat lDtFormat = new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss");
Timestamp lDtmp = new java.sql.Timestamp(lDtFormat.parse(strParseString).getTime());现在我的问题是,我是否应该通过将区域设置传递给构造函数来更改上面的代码。
SimpleDateFormat lDtFormat = new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss",Locale.UK);上面的代码片段能解决这个问题吗?
现在,在设置语言环境后,它不会转换时间,最终也不会转换日期?
发布于 2013-12-18 20:36:27
在SimpleDateFormat的构造函数中显式给出local是不够的。它的主要用途是支持本地化字符串的格式化或解析,如"March“(英语)、"Maart”(荷兰语)等。
您还需要在SimpleDateFormat中设置时区,这里可能是伦敦的时区,如下所示:
lDtFormat.setTimeZone(TimeZone.getTimeZone("Europe/London"));您还应该检查在您的国际日期和时间交换方案中,服务器上的时区是否不应该配置为UTC ("GMT")。
https://stackoverflow.com/questions/20657768
复制相似问题