我使用两个日期函数将日期/时间转换为另一种格式。
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.000fun 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
发布于 2021-02-05 10:36:15
问题是日期和时间之间的间隔在输入中不是固定的,但在模式中是固定的。请改用填充格式字符来解决此问题。
我不喜欢函数使用格式化进行隐式类型转换的方式。您实际上传递的不是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"
}https://stackoverflow.com/questions/66056166
复制相似问题