Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用于字符串行为不规则的简单日期格式_Java_Date_Simpledateformat - Fatal编程技术网

Java 用于字符串行为不规则的简单日期格式

Java 用于字符串行为不规则的简单日期格式,java,date,simpledateformat,Java,Date,Simpledateformat,为了给您一个概述,我们有一个MDB应用程序,在该应用程序上我们可以全天接收事务。提要中的一列是ddmmyyyy hhmiss格式的日期。我们正试图通过SimpleDataFormat(JavaAPI)对其进行解析,以便将字符串解析为要插入到表中的日期对象 发生的情况是,在某些情况下,我的日期被移到了以前的日期。观察结果是,它已向后移动了5-6个小时,导致交易成为BVT,尽管它不是。 例如:其中一笔交易于9月24日格林尼治标准时间上午12:01到达,但在表中插入的时间为9月23日下午7:30 我还

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

发生的情况是,在某些情况下,我的日期被移到了以前的日期。观察结果是,它已向后移动了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);
上面的代码片段可以解决这个问题吗


是否现在在设置区域设置后,它不会转换时间并最终转换日期?

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

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

lDtFormat.setTimeZone(TimeZone.getTimeZone("Europe/London"));
您还应该检查在国际日期和时间交换的场景中,服务器上的时区是否最好配置为UTC(“GMT”)