不从 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 分钟。
我正在尝试解析包含日期时间的字符串
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 分钟。