首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >日期格式- Dataweave

日期格式- Dataweave
EN

Stack Overflow用户
提问于 2021-02-05 09:05:31
回答 1查看 68关注 0票数 0

我使用两个日期函数将日期/时间转换为另一种格式。

代码语言:javascript
复制
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
代码语言:javascript
复制
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"}
代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-05 10:36:15

问题是日期和时间之间的间隔在输入中不是固定的,但在模式中是固定的。请改用填充格式字符来解决此问题。

我不喜欢函数使用格式化进行隐式类型转换的方式。您实际上传递的不是LocalDateTime,而是一个字符串。这使得意图非常模糊。我怀疑这不是一个好的做法。我更改了我的示例以使用显式转换。如果您愿意,可以在调用函数之前显式地将参数转换为LocalDateTime。

代码语言:javascript
复制
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"}

输出:

代码语言:javascript
复制
{
  "concert_time1": "2021-02-01T11:00:00.000",
  "concert_time2": "2021-02-01T15:00:00.000"
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66056166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档