获取C#中两个日期之间的所有日期和所有时间


Get the days of year and all the hours between 2 dates in C#

我有一些文件夹结构,如年份(2016年)->一年中的某一天(308309年)->一天中的某个小时(00到23年)。我想知道如何让两个约会之间的所有白天和时间,比如今天上午9点到昨天上午10点。有简单的方法吗?

我的错!我没有提供足够的信息。所以我在问这个问题之前尝试了SPAN,我不想像SPAN.DAYS、HOURS或MINS那样得到不同的结果,而是希望一年中的几天和两个日期之间的几小时。

就像在昨天上午10点到今天这段时间里,将是第307天的第10个小时,第11个小时等等…直到今天308天9点。我可以通过循环浏览日期来做到这一点,但我想知道是否有一个直接的方法。


我将创建一个简单的类来存储您需要的数据:

2

然后得到结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
DateTime d1 = DateTime.Today.AddDays(-1).AddHours(10);
DateTime d2 = DateTime.Today.AddHours(9);
IList<DateInfo> dates = new List<DateInfo>();

while (d1 <= d2)
{
    DateInfo dateInfo = new DateInfo()
    {
        Year = d1.ToString("yyyy"),
        DayOfYear = d1.DayOfYear.ToString(),
        Hour = d1.ToString("HH"),
    };
    dates.Add(dateInfo);
    d1 = d1.AddHours(1);
}


有n种方法可以找出两个日期之间的差异。其中2个如下

1
2
3
DateTime a = new DateTime(2016, 11, 03, 10, 00, 00);
DateTime b = DateTime.Now;
Console.WriteLine(b.Subtract(a).TotalHours);

这将为您提供两个日期之间的总小时数,其中

1
2
TimeSpan span = (b - a);
Console.WriteLine(String.Format("{0} days, {1} hours, {2} minutes, {3} seconds", span.Days, span.Hours, span.Minutes, span.Seconds));

这将以每个人都能理解的格式为您提供详细信息。