我能够获得当月过去的日子。但是不知道如何获得当前月份的剩余天数。
例如,本月(6月)的天数= 7,剩余的天数= 23
%dw 2.0
output application/json
---
{
"daysPassed" : now().day -1,
"daysLeft" : ""
}
DataWeave似乎没有内置函数来计算月末,因此我使用一些日期算法进行计算。
%dw 2.0
output application/json
fun daysLeftOnMonth(d) = do {
var nextMonthDate = d as Date + |P1M|
var endOfMonth= ( nextMonthDate - ( ("P$(nextMonthDate.day as String)D" as Period) )).day
---
endOfMonth - d.day + 1
}
---
{
"daysPassed" : now().day - 1,
"daysLeft" : daysLeftOnMonth(now())
}
为了更详细地解释,首先我将一个月添加到当前日期:
var nextMonthDate = d as Date + |P1M|
然后我去了月初,少于一天,所以我得到了本月的最后一天:
nextMonthDate - (("P$(nextMonthDate.day as String)D" as Period)
诀窍是如何在DataWeave中保留动态时间段。我必须搜索它。您必须将句点构造为字符串,然后将其强制为句点。
然后我将减去的天数减去一个月的最后一天的天数。
与此类似,您可以始终在其中建立the年检查。
%dw 2.0
output application/json
var thirtyDayMonths = [4,6,8,10]
---
{
"daysPassed" : now().day -1,
"daysLeft" : if (thirtyDayMonths contains now().month)
(30-now().day)
else if (now().month == 2)
(28-now().month)
else (31-now().month)
}