如何将天数转换为年,月和日

Any*_*are -3 .net c# asp.net datetime date

如果我有两个约会,那么我会在几天内得到它们之间的区别像这篇文章.


如何在以下视图中详细说明:

将日期转换为(number of years,number of months and the rest in the number of days)

Jam*_*mes 20

没有开箱即用的解决方案.问题是数据不是"固定的",例如并非所有年份都是365天(闰年为366),并且不是每个月都可以假定为标准的30天.

没有上下文就很难计算出这种信息.但是,您有一个持续时间,以准确计算您需要确切知道的这些天数,即在哪个月和哪一年 - 这将允许您确定该月的确切天数和/ /或年.


根据您的意见和以下条件

  • 1年= 365天
  • 1个月= 30天

然后,以下代码将完成这项工作

DateTime startDate = new DateTime(2010, 1, 1);
DateTime endDate = new DateTime(2013, 1, 10);
var totalDays = (endDate - startDate).TotalDays;
var totalYears = Math.Truncate(totalDays / 365);
var totalMonths = Math.Truncate((totalDays % 365) / 30);
var remainingDays = Math.Truncate((totalDays % 365) % 30);
Console.WriteLine("Estimated duration is {0} year(s), {1} month(s) and {2} day(s)", totalYears, totalMonths, remainingDays);
Run Code Online (Sandbox Code Playgroud)

  • 由于缺少已知数据,该代码非常不准确,并且在某种程度上是公认的答案。每个月都有固定的天数,二月除外,二月有 28 或 29 天,因此您计算闰年 (year%4 == 0) 并且开始看到一些准确性。没有理由需要进行估计 (2认同)

Cze*_*cat 5

不能,因为这取决于开始日期,即 30 天可能是 1 个月 1 天,或 1 个月 2 天,或者如果是闰年,则少于一个月或 365 天将少于一年