首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字符串行为不稳定的简单日期格式

字符串行为不稳定的简单日期格式
EN

Stack Overflow用户
提问于 2013-12-18 20:05:57
回答 1查看 93关注 0票数 0

为了给您一个概述,我们有一个MDB应用程序,我们在该应用程序上全天接收事务。提要中的一列是ddmmyyyy hhmiss格式的日期。我们试图通过SimpleDateFormat (java api)来解析它,这样我们就可以将字符串解析为date对象,以便插入到表中。

发生的情况是,在某些情况下,我的约会被移到了以前的日期。据观察,它已经后退了5-6个小时,导致交易成为BVT,尽管它不是。例如:其中一笔交易在格林威治时间9月24日上午12:01到达,但在表中插入的时间是9月23日下午7:30

我还希望您注意到服务器在芝加哥。那么,由于伦敦和芝加哥之间几乎有5-6个小时的时差,它是否正在考虑服务器时间?

代码片段如下:

代码语言:javascript
复制
SimpleDateFormat lDtFormat = new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss");
Timestamp lDtmp = new java.sql.Timestamp(lDtFormat.parse(strParseString).getTime());

现在我的问题是,我是否应该通过将区域设置传递给构造函数来更改上面的代码。

代码语言:javascript
复制
SimpleDateFormat lDtFormat = new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss",Locale.UK);

上面的代码片段能解决这个问题吗?

现在,在设置语言环境后,它不会转换时间,最终也不会转换日期?

EN

回答 1

Stack Overflow用户

发布于 2013-12-18 20:36:27

在SimpleDateFormat的构造函数中显式给出local是不够的。它的主要用途是支持本地化字符串的格式化或解析,如"March“(英语)、"Maart”(荷兰语)等。

您还需要在SimpleDateFormat中设置时区,这里可能是伦敦的时区,如下所示:

代码语言:javascript
复制
lDtFormat.setTimeZone(TimeZone.getTimeZone("Europe/London"));

您还应该检查在您的国际日期和时间交换方案中,服务器上的时区是否不应该配置为UTC ("GMT")。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20657768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档