c# - 下一个凌晨 3 点发生的日期时间

标签 c# datetime

我敢肯定这很容易,但我突然遇到了心理障碍。
我正在尝试获取下一次凌晨 3 点的 DateTime 对象。例如,如果 DateTime.Now16/july/2009 : 12:04pm - 下一个凌晨 3 点将是 17/july/2009 : 03: 00

但是,如果 DateTime.Now17/july/2009 : 01:00 那么下一次出现仍然是 17/july/2009 : 03 :00(不是后一天)。
这有意义吗?

最佳答案

一个选项:

DateTime now = DateTime.Now;
DateTime today3am = now.Date.AddHours(3);
DateTime next3am = now <= today3am ? today3am : today3am.AddDays(1);

另一个:

DateTime now = DateTime.Now;
DateTime today = now.Date;
DateTime next3am = today.AddHours(3).AddDays(now.Hour >= 3 ? 1 : 0)

有很多方法可以为特定的猫剥皮 :)

当然,这都是本地时间,这意味着您无需担心时区问题。如果您想涉及时区,生活会变得更加棘手......

请注意,如果在计算时日期翻转,最好使用 DateTime.Now 一次 以避免出现问题...

关于c# - 下一个凌晨 3 点发生的日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1142626/

相关文章:

c# - MVC5 将身份验证表单放在 web.config 中的什么位置?

c# - 匹配日期的正则表达式

mysql - 创建日期/上次更新日期设置为 0000-00-00 00 :00:00 in grails when using mariaDb galera cluster

c# - 可空类型作为属性

c# - 枚举到下拉框到方法

c# - 为可序列化模型对象编写事件处理程序的正确方法是什么?

php - 如何在 php 中强制更改日期时间中的日期

java - 从 ISO 8601 日期字符串转换为 BigQuery 时间戳时出错

c# - 面试题——二叉搜索树

c# - 使用C#重叠和合并2个WAV文件