如何解决日期格式 - Dataweave
我使用两个日期函数将日期/时间转换为另一种格式。
Input_1: 02/01/21 11:00:00 AM
Input_2: 02/01/21 3:00:00 PM
Desired Output 1: 2021-02-01T11:00:00.000
Desired Output 2: 2021-02-01T15:00:00.000
fun date_time_format(d: LocalDateTime {format: "M/d/yy h:mm:ss a"}) = d as String {format: "yyyy-MM-dd'T'HH:mm:ss.SSS"}
fun date_time_format2(d: LocalDateTime {format: "M/d/yyyy h:mm:ss a"}) = d as String {format: "yyyy-MM-dd'T'HH:mm:ss.SSS"}
concert_time:
try(() -> date_time_format(Input_1) )
orElseTry(() -> date_time_format2(Input_1) )
orElse null
使用 Input_1 时我的结果是 null
,但使用 Input_2 时它是 2021-02-01T15:00:00.000
解决方法
问题是日期和时间的间距在输入中不是固定的,而是在模式中是固定的。而是使用填充格式字符来解决问题。
我不喜欢函数似乎使用格式进行隐式类型转换的方式。您实际上并没有传递 LocalDateTime 而是传递了一个字符串。这使得意图非常模糊。我怀疑这不是一个好习惯。我将示例更改为使用显式转换。如果您愿意,您可以在调用函数之前将参数显式转换为 LocalDateTime。
fun date_time_format(d: String) =
(d as LocalDateTime {format: "M/d/yy pph:mm:ss a"})
as String {format: "yyyy-MM-dd'T'HH:mm:ss.SSS"}
输出:
{
"concert_time1": "2021-02-01T11:00:00.000","concert_time2": "2021-02-01T15:00:00.000"
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。