将java.sql.timestamp转换为Dataweave中的DateTime

问题描述 投票:0回答:1

我正在从数据库请求中获取java.sql.Timestamp。此值指示时间的瞬间,因此时区不相关(因此,java.sql.Timestamp没有时区,因为它代表全局瞬间)。我希望使用dataweave将其转换为ISO8601 DateTime字符串,但是dataweave会将“我的本地时区(+10:00)”添加到该值。

请参见示例:

%dw 2.0
output application/json
import java!java::sql::Timestamp
---

{
   epoch: 0 as DateTime,
   epochFromDatabase: Timestamp::new(0) as DateTime
}

结果/预览为:

{
  "epoch": "1970-01-01T00:00:00Z",
  "epochFromDatabase": "1970-01-01T10:00:00Z"
}

您可以看到,尽管第二个值(epochFromDatabase)位于UTC(Z)中,但已添加了+10小时。

只能在dataweave中更正吗?我知道我能够在Java中更正此错误,但我只能使用dataweave / mule功能。

-EDIT-按照示例,这不是Java问题:

Timestamp epochTimestamp = new Timestamp(0);
System.out.println(epochTimestamp.toString());
System.out.println(epochTimestamp.toInstant().toString());
System.out.println(epochTimestamp.getTime());

写:

1970-01-01 10:00:00.0
1970-01-01T00:00:00Z
0

这样的toString确实暗示了本地时间(而不是iso8601),但是当转换为即时(toString的默认值为ISO8601)时,它是正确的。

mule dataweave
1个回答
1
投票
© www.soinside.com 2019 - 2024. All rights reserved.