Coldfusion - 奇怪的 parsedatetime 结果

Coldfusion - odd parsedatetime results

我有一个时间字符串:

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

why is the minute different?

因为java.util.Date (which is what ColdFusion uses along with SimpleDateFormat) doesn't handle 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;博士;

ParseDateTime() 无法处理特定的 date/time 字符串,因此您必须自己动手。