【问题标题】:How to get the first day and the last day of the current year in c#c#如何获取当年的第一天和最后一天
【发布时间】:2013-01-06 10:09:06
【问题描述】:

c#如何获取当年的第一天和最后一天

【问题讨论】:

    标签: c# date


    【解决方案1】:

    这个?

    int year = DateTime.Now.Year;
    DateTime firstDay = new DateTime(year, 1, 1);
    DateTime lastDay = new DateTime(year, 12, 31);
    

    【讨论】:

    • 这将跳过最后一天,因为它将生成 12 月 31 日 00:00 而不是 23:59
    • 问题是关于日期,而不是日期时间
    • 没错,但大多数人不会有所作为,并在不知不觉中犯了这个错误。这就是为什么我更愿意在此处留下此评论。只需要日期的人会忽略我的评论。
    【解决方案2】:

    试试这个:

    var firstDay = new DateTime(DateTime.Now.Year, 1, 1);
    var lastDay = new DateTime(DateTime.Now.Year, 12, 31);
    

    【讨论】:

      【解决方案3】:

      这里的答案都没有真正说明最后一天。 在我看来,正确的做法是:

          int year = DateTime.Now.Year;
          DateTime firstDay = new DateTime(year , 1, 1);
          DateTime lastDay = firstDay.AddYears(1).AddTicks(-1)
      

      希望这对某人有价值:)

      【讨论】:

      • 附注:如果您在 bridge.net 中使用它来转换为 js,请使用 AddSeconds,因为“ticks”对于 js 来说太小了。
      • 答案提供了一年中最后 DateTime 值,如问题中所要求的。这个问题没有提到任何关于最后一天的最后一刻。请注意,如果要在某种条件下使用“最后时刻”,通常最好给出一个唯一的上限(下一年的开始),这样精度就无关紧要了。 (如果您必须与确实只有 1 秒精度的东西进行交互,并且您最终会错过“最后一秒的一个滴答声”,那就不好了。)
      • 如果您将值视为 days 并且想要包括最后一天,我建议使用 date 比较。无需找到“最后一个可表示的日期和时间”然后使用它进行比较,如果您需要将该值更精确地传播到系统,则会冒着问题的风险。如果您坚持一致的精度,并使用该精度(在本例中为日期)执行比较,则没有问题。
      【解决方案4】:

      为什么不获取下一个日历年的第一天(第 1 个月第 1 天)并减去一天。

      【讨论】:

        猜你喜欢
        • 2017-08-19
        • 1970-01-01
        • 2014-03-22
        • 1970-01-01
        • 2020-04-03
        • 2017-01-09
        • 2017-10-29
        • 1970-01-01
        相关资源
        最近更新 更多