porry123
porry123
采纳率40%
2015-06-04 03:27 阅读 4.6k
已采纳

求教: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 JonsonJiao 2015-06-04 05:26

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

    点赞 评论 复制链接分享
  • bdmh bdmh 2015-06-04 03:36

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

    点赞 评论 复制链接分享
  • guwei4037 极简吧 2015-06-04 03: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 "")
    
    点赞 评论 复制链接分享
  • Tiger_Zhao Tiger_Zhao 2015-06-04 03:45

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

    点赞 评论 复制链接分享
  • tongyi55555 JonsonJiao 2015-06-04 03:57

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

    点赞 评论 复制链接分享
  • muier 茶木牟夕由 2015-06-04 05:40

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

    点赞 评论 复制链接分享
  • edouardzyc edouardzyc 2015-06-04 07:41

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

    点赞 评论 复制链接分享

相关推荐