2 porry123 porry123 于 2015.06.04 11:27 提问

求教:DateTime.AddYears()的一年是怎么推算的?
                        year = model.Jdate.ToString("yyyy");
                            month = model.Jdate.ToString("MM");
            day = model.Jdate.ToString("dd");
            DateTime dt = new DateTime(Convert.ToInt32(year), Convert.ToInt32(month), Convert.ToInt32(day));             
            date = dt.AddYears(1).ToString("yyyy年MM月dd日");        

                            现有需求:从资料库取出日期,并且计算一整年后的日期。
                            但是似乎用AddYears()得到的日期并不准确,总是差了一天。

7个回答

tongyi55555
tongyi55555   2015.06.04 13:26
已采纳

AddYears 方法计算生成的年,同时考虑闰年。 生成的 DateTime 对象的月和时间部分与此实例相同。是考虑了闰年的,官方写的。得到的时间差一天?还是差几个小时,具体些?

tongyi55555
tongyi55555 回复porry123: 问题就是2016年是闰年,正如文档说的addYears是考虑了闰年与否的。望采纳。
2 年多之前 回复
porry123
porry123 回复那一抹代码: 经过了2016年2月的都按366天算,在2月之前或之后都365天,很神奇,应该说很精准。谢谢了
2 年多之前 回复
tongyi55555
tongyi55555 百度计算器只提供天数的增减,按365天是6月3日,没有问题,关键是你用的是addYears方法,这个一年就不一定是365天了,他考虑了这一年之中有没有闰月,有就是366天,因此你得到的是6月4日。你试试把起始日期改成2014年的,再加一年看看。
2 年多之前 回复
porry123
porry123 回复那一抹代码: 网上那些程序的计算结果都是6-3,比如百度的日期计算器,我只想要个准确的日期
2 年多之前 回复
tongyi55555
tongyi55555 比如今天是2015-6-4,那加1年之后得到的日期是2016-6-4,程序没有问题的,你想要6月3日么?
2 年多之前 回复
porry123
porry123 我算法里面只给到day啊,应该不会有小时的问题吧。比如给今天日期返回明年的6月4日,按365天应该是明年6月3日才对
2 年多之前 回复
guwei4037
guwei4037   Ds   Rxr 2015.06.04 11:37
如果 value + DateTime.Year 也是一个闰年返回值,该年份表示闰日。 例如,如果四年添加到2012年2月29日,日期返回为2016年2月29日。
如果 value + DateTime.Year 不是一个闰年,返回值表示该年闰日的前一天。 例如,如果1年添加到2012年2月29日,日期返回为2013年2月28日。 

    [https://msdn.microsoft.com/zh-cn/library/system.datetime.addyears.aspx](https://msdn.microsoft.com/zh-cn/library/system.datetime.addyears.aspx "")
bdmh
bdmh   Ds   Rxr 2015.06.04 11:36

怎么就差了一天呢,1月1号,肯定是道12月31号是一年,不会是到1月1号是一年

porry123
porry123 事实就差了一天,我取今天日期为例,给我的是明年的6月4号,应该是6月3日才准确
2 年多之前 回复
Tiger_Zhao
Tiger_Zhao   Rxr 2015.06.04 11:45

年月日部分:变成下一年的同月同日,如果日数超过该月的最大日数就取最大日数(唯一的就是闰年的2月29到了下一年变成2月28)。
时间部分:保持不变。

tongyi55555
tongyi55555   2015.06.04 11:57

2016年是闰年。楼主是计算的今年的时间么?

porry123
porry123 所以这个方法是不考虑闰年的吗?
2 年多之前 回复
muier
muier   2015.06.04 13:40

AddYears 方法计算生成的年,同时考虑闰年

edouardzyc
edouardzyc   2015.06.04 15:41

呵呵 既然每次都给你多加一天,你再减去一天不就可以了, 何必纠结呢

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!