我需要解析一个字段,有时将其指定为日期,有时将其指定为日期/时间。使用Java
8时间API是否可以为此使用单个数据类型?目前,我尝试为其使用LocalDateTime,但是对于以下调用,LocalDateTime.parse("1986-04-08", DateTimeFormatter.ofPattern("yyyy-MM-dd"))
我得到了
java.time.DateTimeException: Unable to obtain LocalDateTime from TemporalAccessor: {},ISO resolved to 1986-04-08 of type java.time.format.Parsed
这是某些接受日期/日期时间解析模式作为配置选项的通用解析器的一部分。因此,例如下面的解决方案具有硬编码的解析模式
if ("yyyy-MM-dd".equals(pattern)) {
LocalDate.parse(value, DateTimeFormatter.ofPattern("yyyy-MM-dd"))).atStartOfDay()
}
对我来说不是一个选择。
任何其他建议以干净的方式进行编码都是值得欢迎的。
只需使用构建器DateTimeFormatterBuilder创建自定义格式器
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendPattern("yyyy-MM-dd[ HH:mm:ss]")
.parseDefaulting(ChronoField.HOUR_OF_DAY, 0)
.parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0)
.parseDefaulting(ChronoField.SECOND_OF_MINUTE, 0)
.toFormatter();
该格式化程序使用[]
方括号允许使用格式中的可选部分,并添加了默认值hour HOUR_OF_DAY
,minutes
MINUTE_OF_HOUR
和second SECOND_OF_MINUTE
。
注意:您可以省略分钟和秒钟,只要提供小时就足够了。
并照常使用它。
LocalDateTime localDateTime1 = LocalDateTime.parse("1994-05-13", formatter);
LocalDateTime localDateTime2 = LocalDateTime.parse("1994-05-13 23:00:00", formatter);
这将输出正确的日期时间,默认小时数为0(一天的开始时间)。
System.out.println(localDateTime1); // 1994-05-13T00:00
System.out.println(localDateTime2); // 1994-05-13T23:00
问题内容: 我在Swift的应用程序中有一个返回JSON,并且有一个返回日期的字段。当我引用此数据时,代码会给我类似“ / Date(1420420409680)/”的信息。如何将其转换为NSDate?请在Swift中用Objective-C测试示例,但没有成功。 问题答案: 这看起来与Microsoft的ASP.NET AJAX使用的日期的JSON编码非常相似,JavaScript和.NET中的
我试图以以下格式解析来自MySql的数据: Java解析器代码如下: java线程“AWT-EventQueue-0”中出现异常。时间总体安排DateTimeParseException:无法解析文本“06-08-2017 04:15”:无法从临时助理获取ZonedDateTime:{MinuteOfHour=15,DayOfMonth=8,WeekBasedYear[WeekFields[SUN
问题内容: 我从声称的API获取下一个字符串 所有日期格式均为ISO8601。 我正在尝试下一个代码: 不幸的是,结果 updatedAt 为nil 问题答案: 您的日期格式不正确,您需要考虑毫秒。 需要澄清的是,在日期格式中添加可以解决此问题。
问题内容: 请像我在golang中帮助我解析日期 我正在尝试布局 但是编译器说 问题答案: 包装时间 导入“时间” [布局]参考时间可以认为是 使用,而不是。 例如, 游乐场:https : //play.golang.org/p/Xr8zaTjODgC 输出:
问题内容: 如何将以下内容转换为日期以插入/更新到MySQL中的or 字段? 用于格式化日期,但不能反之。 问题答案: 您可能要使用该功能。这是函数的逆函数。 STR_TO_DATE(str,format) 这是函数的逆函数。它需要一个字符串和一个格式字符串。如果格式字符串同时包含日期和时间部分,则返回一个值;如果格式字符串仅包含日期或时间部分,则返回一个或值。如果从中提取的日期,时间或日期时间值
我试图将文本解析为持续时间,如下所示: 但是我得到以下错误, 有人能告诉我我的问题在哪里吗?