【发布时间】:2014-08-20 10:46:21
【问题描述】:
我必须以格式解析日期:
HH:mm
dd MMM
dd MMM yyyy
我已经设法处理了最后两个:
val dateParsers = Array(
DateTimeFormat.forPattern("dd MMM").getParser,
DateTimeFormat.forPattern("dd MMM yyyy").getParser,
ISODateTimeFormat.timeParser().getParser
)
val formatter = new DateTimeFormatterBuilder().append(null, dateParsers).toFormatter.withZoneUTC
DateTime.parse(updatedString, formatter.withDefaultYear(currentYear).withLocale(ruLocale))
dd MMM 和 dd MMM yyyy 一切正常,但是当我尝试解析时间时,例如 05:40,我得到的是 01-01-1970 日期而不是今天的日期。在解析器中将默认日期设置为今天的日期的最简单方法是什么?
【问题讨论】:
-
您可以尝试将时间为 00:00:00.000 的当前日期添加到解析时间。似乎有一个类
DateMidnight,因此您可能希望将解析的时间添加到该类的实例中。 -
这是 Java 吗?看起来像另一种 JVM 语言。
-
另一个选项可能是
DateTime.withTimeAtStartOfDay().plus( yourParsedDateTime.getMillis())。请注意,您可能需要处理时区差异或指定时区,但我会留给您。 -
其实是scala,我修复了标签
-
@Thomas 不推荐使用“午夜”相关的类和方法。 (a) 午夜很难定义。 (b) 一天中的第一刻不一定是
00:00:00.000,因为夏令时废话和可能的其他异常情况。而是使用新的withTimeAtStartOfDay方法。DateTime today = DateTime.now( DateTimeZone.forID( "America/Montreal" ) ).withTimeAtStartOfDay();