【发布时间】:2018-07-31 06:34:48
【问题描述】:
我有一个带有日期时间的变量,我必须通过这些规则和场景在特定日期设置它:
- 我连接的 API 有一个每日限制,一旦达到该限制,我必须等到下一天,直到 CEST 上午 9:10
所以我一直在这样做:
var localTime = TimeZoneInfo.ConvertTime(DateTime.Now, TimeZoneInfo.FindSystemTimeZoneById("Central European Standard Time"));
var tomorrowAt0910 = localTime.AddDays(1).Date + new TimeSpan(9, 10, 0);
我已经意识到这段代码有一个错误,因为我可以有以下场景:
- 假设我的申请将于 7 月 30 日下午 15:00 到期,在这种情况下,上面的逻辑将是 VALID
但是
我们有一个更可能发生的下一个场景:
- 申请将于 7 月 31 日上午 5:00 到期,在这种情况下,此逻辑有误,因为 RENEWAL DATE 将设置为 8 月 1 日上午 9:10,这很糟糕
如果应用程序在第二种情况下过期,我应该将日期设置为同一天和几个小时的差异(从早上 5 点到早上 9 点)
我该怎么做?
【问题讨论】:
-
检查过期时间是否在9:10之前。如果是这样,请不要在当地时间添加一天。
-
快速思考:不要添加 1 天,而是添加小时减去本地时区的日期时间偏移量。
-
@VDWWD 你能给我举个例子吗?
-
@Filburt 好的,我明白了,但你能给我举个例子吗? =)
标签: c# asp.net datetime c#-4.0