Coldfusion - странные результаты анализа - PullRequest
2 голосов
/ 12 апреля 2019

У меня есть строка времени:

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 Ответ

1 голос
/ 16 апреля 2019

почему минута отличается?

Это потому, что java.util.Date (это то, что ColdFusion использует вместе с SimpleDateFormat ) не обрабатывает микросекунды , только миллисекунды. Маска ".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

ТЛ; др;

ParseDateTime () не может обработать эту конкретную строку даты / времени, поэтому вам придется выполнить DIY.

...