Coldfusion-奇数解析时间结果

时间:2019-04-12 17:53:00

标签: coldfusion datetime-format coldfusion-10

我有一个时间字符串:

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()来解决此问题。

1 个答案:

答案 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。