Я пытаюсь разобрать строку, содержащую ЗаданНе разборе час от Joda DateTime
def parseDateTime(str : String) : DateTime = {
//need to parse date time of this format
//2015-05-22T05:10:00.305308666Z
DateTime.parse(str,DateTimeFormat.forPattern(dateTimePattern))
}
def dateTimePattern = "yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSSZ"
и вот мой тест пытается разобрать времени и даты
"MarshallerUtil" must "parse a date time correctly from blockcypher" in {
val str = "2015-05-22T05:10:00.305308666Z"
val dateTime = parseDateTime(str)
dateTime.getYear must be (2015)
dateTime.getMonthOfYear must be (DateTimeConstants.MAY)
dateTime.getDayOfMonth must be (22)
dateTime.getHourOfDay must be (5)
dateTime.getMinuteOfHour must be (10)
}
и он не получает правильный час
[info] - must parse a date time correctly from blockcypher *** FAILED ***
[info] 0 was not equal to 5 (MarshallerUtilTest.scala:17)
Что является неправильным для моего шаблона?
Прежде всего, вы должны положить Z внутри апострофов. «yyyy-MM-dd'T'HH: mm: ss.SSSSSSSSS'Z» – znurgl
** Z ** используется для часового пояса в формате даты, где ** ** используется как разделитель между датой и время. Хотя выше решается ваша проблема, вы должны заметить, что ** Z ** относится к часовому поясу, и вы должны убедиться, что вы не «неправильно разбираете» строку даты. – James
@JavaAnto Извините, я удалил свой комментарий, потому что, думаю, я столкнулся с точной проблемой, о которой вы говорите. Другой тестовый пример не подтвердил, что '' ... 5-05-22T05: 10: 00.305 [-05: 00] "не был равен" ... 5-05-22T05: 10: 00.305 [308666Z] "" ' –