Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用C#计算两个日期的月差最简单的方法是什么?_C#_Date - Fatal编程技术网

用C#计算两个日期的月差最简单的方法是什么?

用C#计算两个日期的月差最简单的方法是什么?,c#,date,C#,Date,用C#计算两个日期的月差最简单的方法是什么 ie:(日期1-日期2)。总月数。。这类事情。谢谢 我所能建议的最好办法是得到总天数,然后用相应的除法粗略计算月数。比如: DateTime dt1 = new DateTime( 2010, 10, 23); DateTime dt2 = new DateTime( 2010, 7, 23); TimeSpan ts = dt1 - dt2; int days_per_month = 30; Console.Write( ts.TotalDays /

用C#计算两个日期的月差最简单的方法是什么


ie:(日期1-日期2)。总月数。。这类事情。谢谢

我所能建议的最好办法是得到总天数,然后用相应的除法粗略计算月数。比如:

DateTime dt1 = new DateTime( 2010, 10, 23);
DateTime dt2 = new DateTime( 2010, 7, 23);
TimeSpan ts = dt1 - dt2;
int days_per_month = 30;
Console.Write( ts.TotalDays / days_per_month);
如果你真的同意像2010年2月1日到2010年1月31日这样返回1个月作为答案,那么给出上面的代码,你可以使用

Console.Write( dt1.Month - dt2.Month);
这没有考虑到年份,因此我在这里采用了另一个答案:

类:)


如果您不知道如何在.net中计算日期跨度,下面是一个很好的示例:

来源:


DateTime不显示月份的差异,因为每个月的天数不同。获取月份的最简单方法是
totaldays/30

既然您已经知道您的日期是本月的第一天:

int totalMonths = (date2.Year - date1.Year)*12 + date2.Month - date1.Month;

鉴于您对原始问题所做的更新:编写一个包含两个日期并执行以下操作的函数如何

DateTime d1 = new DateTime(2008, 12, 1);
DateTime d2 = new DateTime(2009, 1, 1);

var month_diff = (d2.Year - d1.Year)*12 + (d2.Month - d1.Month);
Console.WriteLine(month_diff);

你应该弄清楚“月差”是什么意思。例如,您是否希望2010年1月31日到2010年2月1日之间的差值为1个月?是的,在这种情况下,我希望差值为1个月。我的要求是date1和date2始终是给定月份的第一个。谢谢我用一条评论更新了我的答案,并将根据这些新信息更新我的答案文本。这是简单而简短的代码,以防你仍然无法得到答案,看到了吗?这是最简单的方法吗?这是不准确的,因为月份有不同的天数。@Will同意:)因为他使用的是“大”单位,我只是假设他需要一个粗略的值;)是的,谢谢。。我现在有了。。但还不够准确。我知道用一种更大的方法我可以精确地计算它。。只是想知道是否有一个更简单的方法我错过了。你能定义“准确性”适用于非特定单位时间,如月份吗?:)我刚看到你在原来的帖子上的评论。在这种情况下,如果2月1日-1月31日是一个月,您只需减去月份属性,即dt1.month-dt2.month。必须同意。。。这个问题并不十分清楚,但这一点却大错特错,这只是谷歌第一次点击该问题的确切文本时的一个透明复制粘贴工作-1.
int totalMonths = (date2.Year - date1.Year)*12 + date2.Month - date1.Month;
DateTime d1 = new DateTime(2008, 12, 1);
DateTime d2 = new DateTime(2009, 1, 1);

var month_diff = (d2.Year - d1.Year)*12 + (d2.Month - d1.Month);
Console.WriteLine(month_diff);