首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较小时以确定新日期

比较小时以确定新日期
EN

Stack Overflow用户
提问于 2022-09-23 10:12:06
回答 2查看 51关注 0票数 0

我正在开发一个应用程序,用户可以将采样频率设置在1-8小时之间,调整到最接近的完整时间,以收集和处理数据。

例-1,频率设置为8小时并开始@ 06:00:

-> 14:00 -> 22:00 -> 06:00 (加日)

例2,频率设置为3小时并开始@ 20:00:

20:00 -> 23:00 -> 02:00 (加日)-> 05:00

示例3,频率设置为3小时并开始@ 08:00 =日期更改没有问题:

08:00 -> 11:00 -> 14:00 -> 17:00

我在示例日期-时间“:00:00Z”上使用以下格式,但生成的唯一日期是当前日期,这意味着我需要在过午夜时添加一天。

我的问题是,如果需要的话,我还没有弄清楚如何确定,如果需要的话,当跨越到下一个日期时,不需要太多的spagetti代码?...given,即日期更改可以发生在任何2-4样例中。

然后试图确定但失败了。

任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-23 10:31:30

代码语言:javascript
复制
void Main()
{
    string[] hours = {"06:00", "14:00", "22:00", "06:00"};
    var baseDate = DateTime.Today;
    
    for (int i = 0; i < hours.Length; i++)
    {
        var mins = TimeSpan.Parse(hours[i]).TotalMinutes;
        if (i > 0 && mins < TimeSpan.Parse(hours[i - 1]).TotalMinutes) 
           baseDate = baseDate.AddDays(1);

        var dt = baseDate.AddMinutes(mins);
        Console.WriteLine(dt);
    }
}

你没告诉我们你真正需要什么。只要添加这些差异,代码就会更简单。

票数 1
EN

Stack Overflow用户

发布于 2022-09-23 11:11:41

您可以简单地比较第一个DateTime和第二个DateTimefrequency属性的值(通过将frequency值添加到第一个DateTime中创建)。如果他们不一样,你就进入了新的一天:

代码语言:javascript
复制
public static void Main()
{
    var start = DateTime.Now;
    var frequency = 8;

    for (int i = 0; i < 10; i++)
    {
        var  next = start.AddHours(frequency);
        Console.Write("start hour: " + start.Hour + " -> next hour: " + next.Hour);
        if (!start.Date.Equals(next.Date)) Console.Write(" (crossed over to next day)");
        Console.WriteLine();
        start = next;
    }

    Console.ReadKey();
}

输出:

代码语言:javascript
复制
start hour: 11 -> next hour: 19
start hour: 19 -> next hour: 3 (crossed over to next day)
start hour: 3 -> next hour: 11
start hour: 11 -> next hour: 19
start hour: 19 -> next hour: 3 (crossed over to next day)
start hour: 3 -> next hour: 11
start hour: 11 -> next hour: 19
start hour: 19 -> next hour: 3 (crossed over to next day)
start hour: 3 -> next hour: 11
start hour: 11 -> next hour: 19
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73826179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档