【问题标题】:how get yesterday and tomorrow datetime in c#如何在c#中获取昨天和明天的日期时间
【发布时间】:2012-01-02 11:38:18
【问题描述】:

我有一个代码:

int MonthNow = System.DateTime.Now.Month;
int YearNow = System.DateTime.Now.Year;
int DayNow = System.DateTime.Now.Day;

如何在 C# 中获取昨天和明天的日期、月份和年份?

当然,我可以写:

DayTommorow = DayNow +1;

但明天可能是其他月份或年份。 C# 中是否有内置工具可以找出昨天和今天?

【问题讨论】:

  • DayNow + 1- 1 的问题是,如果它是本月最后一天的第一天,这将不起作用。 DateTime.Now.Day 只是当前日期的整数表示。

标签: c# datetime


【解决方案1】:
DateTime tomorrow = DateTime.Today.AddDays(1);
DateTime yesterday = DateTime.Today.AddDays(-1);

【讨论】:

  • 这个答案证明了命名的重要性。
【解决方案2】:

您可以在API reference 中找到此信息。

var today = DateTime.Today;
var tomorrow = today.AddDays(1);
var yesterday = today.AddDays(-1);

【讨论】:

  • 请尽可能发布链接网站的相关部分,而不是链接到该网站
  • JMax,当然。该链接适用于 DateTime.AddDays 方法,该方法允许添加/减去天数。与更通用的 DateTime.Add 方法相比,这更容易在问题的上下文中使用。
  • ...这可能是您答案的详细部分:)。
【解决方案3】:

如果你想得到昨天和明天的 00:00:00 时间,你应该这样做:

DateTime yesterday = DateTime.Today.AddDays(-1);
DateTime tomorrow = DateTime.Today.AddDays(1); // Output example: 6. 02. 2016 00:00:00

请记住,如果您这样做:

DateTime yesterday = DateTime.Now.AddDays(-1);
DateTime tomorrow = DateTime.Now.AddDays(1); // Output example: 6. 02. 2016 18:09:23

那么您将得到当前时间减去一天,而不是昨天的 00:00:00 时间。

【讨论】:

    【解决方案4】:

    今天:

    DateTime.Today

    明天:

    DateTime.Today.AddDays(1)
    

    昨天:

    DateTime.Today.AddDays(-1)
    

    【讨论】:

      【解决方案5】:

      你想要DateTime.Today.AddDays(1)

      【讨论】:

        【解决方案6】:

        使用DateTime.AddDays() (MSDN Documentation DateTime.AddDays Method)。

        DateTime tomorrow = DateTime.Now.AddDays(1);
        DateTime yesterday = DateTime.Now.AddDays(-1);
        

        【讨论】:

        • 您的昨天是“24 小时前”。使用 DateTime.Today 以标准方式取消指定日期。
        【解决方案7】:

        诀窍是使用“DateTime”来操作日期;仅当您需要日期的“最终结果”时才使用整数和字符串。

        例如(伪代码):

        1. 获取“明天的日期时间 = 现在 + 1”

        2. 确定结果日期的日期、星期几、月份中的哪一天 - 任何你想要的 - 。

        【讨论】:

          【解决方案8】:

          昨天在 UTC 中获得“本地”。

            var now = DateTime.Now;
            var yesterday = new DateTime(now.Year, now.Month, now.Day, 0, 0, 0, DateTimeKind.Utc).AddDays(-1);
          

          【讨论】:

            【解决方案9】:

            请注意不要在结果中添加不需要的时区,尤其是在要通过 Web API 发送日期的情况下。改用 UtcNow,使其无时区。

            【讨论】:

              猜你喜欢
              • 2015-08-04
              • 1970-01-01
              • 2011-06-12
              • 1970-01-01
              • 2014-02-27
              • 2019-10-30
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多