c# - 如何在 c# 中使用 AddYears 方法获得 2 月 29 日
问题描述
我们使用每天运行的作业并在一年前的一天执行一些操作。实际上我们只是使用类似的东西:DateTime.UtcNow.AddYears(1)
. 但似乎不可能使用这种技术获得 2 月 29 日(例如 2020 年):
var target = new DateTime(2020, 2, 29);
bool result = (target == target.AddYears(-1).AddYears(1));//false
那么是否有可能以某种方式将目标定在未来的 2 月 29 日?
解决方案
不,文档指出:
如果 value + DateTime.Year 也是闰年,则返回值代表该年的闰日。例如,如果 2012 年 2 月 29 日加上四年,则返回的日期为 2016 年 2 月 29 日。
如果 value + DateTime.Year 不是闰年,则返回值代表该年闰日的前一天。例如,如果将一年添加到 2012 年 2 月 29 日,则返回的日期为 2013 年 2 月 28 日。
这意味着如果您添加一年,您将始终得到 2 月 28 日。获得第 29 个通孔的唯一方法AddYears
是添加 4 的倍数。
推荐阅读
- flutter - 如何本地化 web 应用程序名称和描述的颤振?
- flutter - Iconbutton onPress no 在颤动中调用
- javascript - Kotlin 的 null 感知运算符“?:”是否有“直接分配”?
- android - 如何在 Rollette 游戏中向每个部分跨 android 播放声音
- python - 添加自定义类小部件时 PanedWindow 没有子级
- numpy - 使用 numpy 进行 numba 编译有什么问题?
- javascript - 函数未正确完成其任务
- javascript - DataTables.net 中分页、长度更改和信息控件的定位
- amazon-web-services - 如何在 AWS 中 ping 同一 vpc 相同子网但不同安全组中运行的 EC2 实例
- botframework - 用于 Botframework 的 Azure Active Directory