簡體   English   中英

使用DataWeave 1.0在Mule-3.8.4中轉換為SalesForce日期時間格式

[英]Converting to SalesForce datetime format in Mule-3.8.4 using DataWeave 1.0

我正在嘗試將CS​​V中的datetime列轉換為salesforce日期時間格式以執行upsert。 我在mule-3.8.4 dataweave1.0中嘗試過如下表達,但是我收到了一個錯誤。

我嘗試了以下方法:

第一次嘗試

Test_Date: "1/14/19 6:31 PM" as :localdatetime { format: "M/dd/yy h:mm a" } as :localdatetime { format: "YYYY-MM-DD'T'hh:mm:ssZ" })

預期產量 :2019-01-14T06:31:00Z

實際產出 :1月14日星期一,2019年東部時間18:31:00

在Salesforce中Upsert后,它看起來像這樣: 2019-01-14T00:00:00.000+0000 它不節省時間。


第二次嘗試

Test_Date: "1/14/19 6:31 PM" as :localdatetime { format: "M/dd/yy h:mm a" } as :localdatetime { format: "YYYY-MM-DD'T'hh:mm:ss" })

預期產出 :2019-01-14T06:31:00

實際產出 :1月14日星期一,2019年東部時間18:31:00

在Salesforce中Upsert后,它看起來像這樣: 2019-01-14T00:00:00.000+0000 它仍然沒有節省時間。

問題是什么?

要格式化日期,從左到右讀取的格式模式需要與預期輸出匹配。 所以對於你的例子:

2019-01-14T06:31:00Z

YYYY-MM-dd'T'HH:MM:SSZ

y代表年份M代表月份(小寫字母m代表分鍾

d是一天

H是24小時格式的小時。 (小寫將是12格式)

S是毫秒

Z是時區如果需要,您可以配置更多的時區和毫秒。

以下是salesforce日期格式信息:

https://developer.salesforce.com/docs/atlas.en-us.api_asynch.meta/api_asynch/datafiles_date_format.htm

更多日期格式信息:

https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

您是否嘗試將其作為String發送到Salesforce? 一旦類型為LocalDateTime ,就沒有進一步的格式化。 格式僅僅是為了解析的目的StringLocalDateTime或的輸出格式化LocalDateTime到一個String 例如:

"1/14/19 6:31 PM" 
  as :localdatetime { format: "M/dd/yy h:mm a" }         // This parses the string as LocalDateTime
  as :localdatetime { format: "YYYY-MM-DD'T'hh:mm:ssZ" } // This doesn't do anything, it's already LocalDateTime

如果要獲取一個表示日期時間的String並將其格式化為表示相同日期時間的不同String ,則可以執行以下操作:

...
%var inputFormat  = "M/dd/yy h:mm a"
%var outputFormat = "yyyy-MM-dd'T'HH:mm:ss"
---
"1/14/19 6:31 PM" 
  as :localdatetime { format: inputFormat  } // Used to parse the input string
  as :string        { format: outputFormat } // Used to format the output string

最后一個腳本的輸出應為"2019-01-14T18:31:00"

最后下面的代碼工作。 Mule Dataweave將以下格式(yyyy-MM-dd'T'HH:mm:ss.SSSZ)轉換為java.util.Calendar對象。

Test_Date:“1/22/19 6:31 PM”as:localdatetime {format:“M / dd / yy h:mm a”} as:datetime {format:“yyyy-MM-dd'T'HH:mm: ss.SSSZ“})

這是Payload在DataWeave中轉換消息后的樣子(上一步):

Test_Date = java.util.GregorianCalendar中[時間= ?, areFieldsSet =假,areAllFieldsSet =真,寬大=真,區= sun.util.calendar.ZoneInfo [ID = “GMT”,偏移= 0,dstSavings = 0,useDaylight =假,過渡= 0,lastRule =空],Firstdayofweek可= 1,minimalDaysInFirstWeek = 1,ERA = 1,YEAR = 2019,MONTH = 0,WEEK_OF_YEAR = 13,WEEK_OF_MONTH = 5,DAY_OF_MONTH = 22,DAY_OF_YEAR = 84,DAY_OF_WEEK = 2 ,DAY_OF_WEEK_IN_MONTH = 4,AM_PM = 1,HOUR = 4,HOUR_OF_DAY = 18,MINUTE = 31,SECOND = 0,微差= 0,ZONE_OFFSET = 0,DST_OFFSET = 0]

SalesForce中Upsert后的輸出:2019-01-22T18:31:00.000 + 0000

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM