如何在YAML流水线中声明当月最后一天的变量?
Azure DevOps YAML流水线获取当月最后一天变量的正确写法
你之前的写法出错是因为format()函数返回的是字符串类型,不是DateTime对象,自然没法直接调用AddMonths()、AddDays()这些日期方法。
要实现获取当月最后一天,得先对日期对象做运算,再格式化输出。给你两种可行的写法:
方法一:基于当月第一天计算
先构造当月第一天的DateTime对象,加1个月后再减1天,最后格式化:
pool: vmImage: 'windows-latest' variables: startOfMonth: $[format('{0:yyyy-MM}-01', pipeline.startTime)] endOfMonth: $[format('{0:yyyy-MM-dd}', DateTime.Parse(variables.startOfMonth).AddMonths(1).AddDays(-1))]
方法二:直接基于流水线启动时间计算
直接从pipeline.startTime(DateTime对象)中提取年、月,构造当月第一天,再做日期运算:
pool: vmImage: 'windows-latest' variables: endOfMonth: $[format('{0:yyyy-MM-dd}', new DateTime(pipeline.startTime.Year, pipeline.startTime.Month, 1).AddMonths(1).AddDays(-1))]
两种写法都能准确得到当月最后一天,比如2024年5月的最后一天会返回2024-05-31,2月会自动识别平/闰年返回对应日期。
内容的提问来源于stack exchange,提问作者steveyB
相关产品推荐
相关产品推荐

