gpt4 book ai didi

c# - 一个棘手的 DateTime 算法问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:11:23 24 4
gpt4 key购买 nike

.NET 在 DateTime 结构中为我提供本地和 UTC 时区(或任何其他时区)的当前时间。

仅给定小时/分钟变量,找出该时间段的下一次出现时间(例如下午 6:30/上午),并能够随意检索更多 future 时间。

这听起来很简单,但确实 friend 们,这已经让我很费解了。

编辑:

例子:

~-------|now|------??-----------|future known time|------------~
~-------2pm------??2-----------9am------------~
??2 = 19

最佳答案

如果我没理解错的话,您想知道要经过多少时间才能到达下一个给定的小时:分钟。为此,您可以使用 TimeSpan 结构。

    //this is your target time from 1 to 12 h
var future = new TimeSpan(11, 30, 0);

//TimeOfDay gives you the time elapsed since midnight as a TimeSpan
var difference = future.Subtract(DateTime.Now.TimeOfDay);

//check for negative TimeSpan,
//it means the target time occurs on the next day, just add 24 hours
if (difference < TimeSpan.Zero)
difference = difference.Add(TimeSpan.FromDays(1));

现在您有一个代表您需要的TimeSpan。您可以使用它的属性来表达您认为合适的内容。例如:

    difference.TotalHours; //(double) total time as a fractional hour
difference.Hours; //(int) just the hour component of the total time

至于检索更多的 future 时间(am 和 pm),您可以将 difference 再增加 12 小时以获得下一次出现。

关于c# - 一个棘手的 DateTime 算法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5733510/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com