【问题标题】:C# DateTime evaluation problemC# DateTime 评估问题
【发布时间】:2011-08-26 01:37:42
【问题描述】:

所以我试图弄清楚我在这个逻辑上做错了什么。这似乎很简单,我的断点表明“if”语句中的评估解析为 True,但 sum.ppStart 等人并没有增加 14 天。

这可能很简单,但我们将不胜感激。

//Determine the start/end days of each week of the pay period and retrieve a list of those entries

DateTime[] weeks = timeTools.calcPP(0);
DateTime today = DateTime.Now.Date;

if (today > weeks[3])
{
  weeks[0].AddDays(14);
  weeks[3].AddDays(14);
  weeks[4].AddDays(14);
}

sum.ppStart = weeks[0];
sum.ppEnd = weeks[3];
sum.payDate = weeks[4];

【问题讨论】:

    标签: c# asp.net-mvc-3 datetime


    【解决方案1】:

    AddDays 返回一个DateTimenew 实例,现有值没有改变,它是一个不可变结构。使用函数时,捕获结果

    DateTime myDate = ...
    myDate = myDate.AddDays(14);
    

    【讨论】:

    • 哇,我觉得自己像个白痴。好像我以前从来没有这样做过,哈哈。感谢大家的帮助!
    • 只是补充一点——DateTime 是不可变的,就像String 一样。最初的问题是这两个问题的常见错误。
    【解决方案2】:

    那是因为您没有使用AddDays 方法的结果。签名是

     public DateTime AddDays(double days) 
    

    左右(见link)。你需要这样做:

    weeks[0] = weeks[0].AddDays(14);
    

    【讨论】:

      【解决方案3】:

      您需要分配值:

      if (today > weeks[3])
      {
        weeks[0] = weeks[0].AddDays(14);
        weeks[3] = weeks[3].AddDays(14);
        weeks[4] = weeks[4].AddDays(14);
      }
      

      【讨论】:

        猜你喜欢
        • 2013-07-13
        • 1970-01-01
        • 1970-01-01
        • 2013-11-04
        • 1970-01-01
        • 2012-10-25
        • 2018-04-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多