日期格式 - Dataweave
Date Formatting - Dataweave
我使用两个日期函数将 Date/Times 转换为另一种格式。
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"
}
我使用两个日期函数将 Date/Times 转换为另一种格式。
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"
}