不从 joda DateTime 解析一个小时

Not parsing an hour from a 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)

我的图案哪里不对?

那是因为它将日期时间解析为 UTC,并且当您调用 getHourOfDay 时,它 returns 具有本地时区的时间单位。例如,同一个程序在这里打印“10”,因为我的本地时区是“+05:30”,所以 05:10 而 05:30 是 10:40。希望对您有所帮助。

更新:

Z 是一个 placeholder/matcher,用于日期时间模式以匹配时区。时区的格式为“+HH:mm”或“-HH:mm”,例如“+05:30”表示时区比 UTC 时间提前 5 小时 30 分钟。