我有一个时间字符串:
2018-08-09T13:19:22.479522-05:00
使用以下命令解析字符串:
parseDateTime(time, "yyyy-MM-dd'T'HH:mm:ss.SSSSSSXXX")
产生此结果:
2018-08-09 14:27:21
我距格林尼治标准时间-4小时,所以我得到了小时差,但是为什么分钟不一样?
更新:
我确定问题是6位数毫秒,但是ColdFusion可以处理吗?到目前为止,我正在使用left()
和right()
来解决此问题。
答案 0 :(得分:1)
为什么分钟不一样?
这是因为java.util.Date(ColdFusion与SimpleDateFormat一起使用)仅在毫秒内无法处理microseconds。掩码".SSSSSS"
仅允许CF / Java 提取多余的数字,但是一旦提取,整个值将被视为毫秒数:
479522 milliseconds
...或479.522 seconds
...或7 minutes, 59 seconds and 522 milliseconds
因此,在这种情况下,与其增加几分之一秒的时间,不如将最终时间增加近八分钟。这就是为什么结果不符合您预期的原因。
Base Time 14:19:22.000
+ .522 milliseconds
+ 59.000 seconds
+ 7:00.000 minutes
====================
Final Time 14:27:21.522
tl; dr;
ParseDateTime()无法处理该特定日期/时间字符串,因此您必须DIY。