【问题标题】:Cant get hour and minute of the day无法获取一天中的小时和分钟
【发布时间】:2013-01-16 16:20:45
【问题描述】:

我正在尝试获取当前时间:

date = "(" + DateTime.Today.Year.ToString() + "-" + 
DateTime.Today.Month.ToString() + "-" + DateTime.Today.Day.ToString() + " " + 
"(" + DateTime.Today.Hour.ToString() + ":" + DateTime.Today.Minute.ToString() 
+")" + ")";

这应该得到如下日期:

(2013-2-1 (13:01))

但它给了我:

(2013-2-1 (0:0))

我该如何解决这个问题?

【问题讨论】:

  • 使用DateTime.Now, DateTime.Today 只会给你我认为的日期。
  • 哇! 3 个答案在 26 秒内彼此 - 如果您计算上面的评论,则为 4 个。 :-)
  • 请改用date = DateTime.Now.ToString(@"(yyyy\-MM\-dd (HH\:mm))")
  • 另外,不知道为什么人们不赞成这个问题。对我来说,这似乎不是一个坏问题。它表明对 DateTimes 的工作原理缺乏了解,但随后所有问题都表明对某事缺乏了解,这就是提出问题的原因。
  • 与@ColinMackay 一起添加,也注意对downvote 发表评论

标签: c# datetime


【解决方案1】:

您正在使用DateTime.Today,记录为:

设置为今天日期的对象,时间组件设置为 00:00:00。

所以是的,如果您找到 HourMinute 组件,它们为 0...

如果您想要一天中的当前时间,请改用DateTime.Now。请注意,TodayNow 都使用系统本地时区 - 您需要确保这确实是您想要使用的。 (对于本地客户端应用程序可能没问题,但对于 Web 应用程序则不行。)

【讨论】:

    【解决方案2】:

    现在不要使用所有串联,而是使用 DateTime 对象的 ToString() 方法...

    string date = DateTime.Now.ToString("(yyyy-M-d (hh:mm))");
    

    此外,正如许多其他人所指出的,请注意使用 DateTime.Now 而不是 DateTime.Today

    【讨论】:

      【解决方案3】:

      使用 DateTime.Now 代替 DateTime.Today

      DateTime.Today 的时间部分设置为 00:00:00
      DateTime.Now 获取本地计算机的当前日期和时间

      【讨论】:

        【解决方案4】:

        你有DateTime.Today,它会截断时间元素。

        请改用DateTime.Now,它会为您提供完整的日期和时间。

        【讨论】:

          【解决方案5】:

          使用DateTime.Now 而不是DateTime.TodayDateTime.Today 不包括时间,只包括日期。另见:Difference between System.DateTime.Now and System.DateTime.Today

          【讨论】:

            【解决方案6】:

            如果是 Web 应用程序,请使用 NodaTime。使用DateTime.Now 作为本地日期和时间。

            应该是这样的:

            date = "(" + DateTime.Now.Year.ToString() + "-" + DateTime.Now.Month.ToString() + "-" + DateTime.Now.Day.ToString() + " " + "(" + DateTime.Now.Hour.ToString() + ":" + DateTime.Now.Minute.ToString() +")" + ")";
            

            【讨论】:

            • 多次调用DateTime.Now 绝不是一件好事。而且 Noda Time 很棒,但它不仅限于 Web 应用程序。这段代码无论如何都没有演示 Noda Time,所以我不确定你在做什么。
            【解决方案7】:

            请根据您的格式尝试这个较短的当前日期和时间代码

            var date = DateTime.Now.ToString("(yyyy-MM-dd(HH:mm))");

            【讨论】:

              【解决方案8】:

              使用以下代码代替串联。它比您所做的连接工作更优化。

              string date = DateTime.Now.ToString("(yyyy-M-d (hh:mm))");
              

              另外DateTime.Today 里面也没有时间元素。

              【讨论】:

                【解决方案9】:

                DateTime.Today 将返回你 2013-2-1 00:00:00 .. 它给出了确定的时间,但时间戳设置为 00:00:00.。这就是为什么你没有得到异常 n 仍然得到00:00:00 的原因。当前时间戳使用DateTime.Now

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2020-11-21
                  • 1970-01-01
                  • 1970-01-01
                  • 2010-12-04
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多