我可以使用任何 CRON 表达式在每个月的最后一天触发 Azure 函数吗?这似乎是定时器触发器的典型场景,我很惊讶我正在努力弄清楚这一点。
我目前正在使用一种解决方法,即在每月的 28-31 日触发并检查代码(如果是该月的最后一天),但该解决方案感觉有点 hacky。
即使是明确的“不可能”也将不胜感激。
编辑: 这是代码
using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;
using System;
namespace MyProsj.Functions.Triggers
{
public static class LastOfEachMonth
{
[FunctionName("LastOfEachMonth")]
public static void Run([TimerTrigger("0 0 20 28-31 * *")] TimerInfo myTimer, ILogger log)
{
if (DateTime.Now.AddDays(1).Day == 1)
{
//DO STUFF HERE
}
}
}
}
var daysInMonth = DateTime.DaysInMonth(DateTime.UtcNow.Year, DateTime.UtcNow.Month);
var lastDayOfMonth = new DateTime(DateTime.UtcNow.Year, DateTime.UtcNow.Month, daysInMonth);
var lastWorkingDayOfMonth = lastDayOfMonth.DayOfWeek switch
{
DayOfWeek.Saturday => lastDayOfMonth.AddDays(-1),
DayOfWeek.Sunday => lastDayOfMonth.AddDays(-2),
_ => lastDayOfMonth,
};