我的要求是使用Mule中的DataWeave将字符串转换为日期格式
输入字符串
8/30/2015 4:00:13 PM
输出日期必须为MM / DD / YYYY格式,即
08/30/2015
我尝试过使用以下逻辑
(($[1] splitBy " ")[0]) as :date{format:"[m01]/[d01]/[y0001]"}
这给出了错误
Exception while executing:
"Order Date":(($[1] splitBy " ")[0]) as :date{format:"[m01]/[d01]/[y0001]"},
Cannot coerce a :string to a :date ^
我使用的是Mule Anypoint Studio版本:5.2.0
答案 0 :(得分:8)
首先,您需要将其转换为localdatetime(无时区),然后转换为具有所需格式的字符串。
"8/30/2015 4:00:13 PM"
as :localdatetime {format: "M/dd/yyyy h:mm:ss a"}
as :string {format: "MM/dd/yyyy"}
有关其他信息,请参阅。 https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html
All letters 'A' to 'Z' and 'a' to 'z' are reserved as pattern letters. The following pattern letters are defined:
Symbol Meaning Presentation Examples
------ ------- ------------ -------
G era text AD; Anno Domini; A
u year year 2004; 04
y year-of-era year 2004; 04
D day-of-year number 189
M/L month-of-year number/text 7; 07; Jul; July; J
d day-of-month number 10
Q/q quarter-of-year number/text 3; 03; Q3; 3rd quarter
Y week-based-year year 1996; 96
w week-of-week-based-year number 27
W week-of-month number 4
E day-of-week text Tue; Tuesday; T
e/c localized day-of-week number/text 2; 02; Tue; Tuesday; T
F week-of-month number 3
a am-pm-of-day text PM
h clock-hour-of-am-pm (1-12) number 12
K hour-of-am-pm (0-11) number 0
k clock-hour-of-am-pm (1-24) number 0
H hour-of-day (0-23) number 0
m minute-of-hour number 30
s second-of-minute number 55
S fraction-of-second fraction 978
A milli-of-day number 1234
n nano-of-second number 987654321
N nano-of-day number 1234000000
V time-zone ID zone-id America/Los_Angeles; Z; -08:30
z time-zone name zone-name Pacific Standard Time; PST
O localized zone-offset offset-O GMT+8; GMT+08:00; UTC-08:00;
X zone-offset 'Z' for zero offset-X Z; -08; -0830; -08:30; -083015; -08:30:15;
x zone-offset offset-x +0000; -08; -0830; -08:30; -083015; -08:30:15;
Z zone-offset offset-Z +0000; -0800; -08:00;
p pad next pad modifier 1
' escape for text delimiter
'' single quote literal '
[ optional section start
] optional section end
# reserved for future use
{ reserved for future use
} reserved for future use
答案 1 :(得分:2)
在DataWeave中,您可以将字符串解析为各种Java日期时间类型,并将它们格式化为字符串。尝试解析后跟一个格式,如下所示:
payload.date as :localdatetime {format: "M/dd/yyyy h:mm:ss a"} as :string {format: "MM/dd/yyyy"}
Here's some more detail关于DataWeave中的日期格式。
答案 2 :(得分:1)
您好,在dataweave中,您可以像这样编写表达式
formatedDate: |2003-10-01T23:57:59| as :string {format: "MM-dd-YYYY"}
答案 3 :(得分:-5)
你可以使用它,
var newDate = new Date("8/30/2015 4:00:13 PM");
var dd = newDate.getDate();
var mm = newDate.getMonth()+1; //January is 0!
var yyyy = newDate.getFullYear();
if(dd<10){
dd='0'+dd
}
if(mm<10){
mm='0'+mm
}
var formattedDate = mm+'/'+dd+'/'+yyyy;
console.log(formattedDate); //Prints "08/30/2015"
请参阅this