gpt4 book ai didi

.net - 获取 .NET 中的日期和时间

转载 作者:行者123 更新时间:2023-12-02 10:06:14 27 4
gpt4 key购买 nike

目前我正在尝试使用此代码获取小时和分钟:

DateTime currentDate = DateTime.Now.Date;
int currentHour = DateTime.Now.Date.Hour;
int currentMin = DateTime.Now.Date.Minute;

但是我得到的当前小时和分钟为零。我该如何解决这个问题?

最佳答案

您正在使用Date属性为您提供给定日期时间的午夜。你现在只想:

DateTime now = DateTime.Now;
int hour = now.Hour;
int minute = now.Minute;
DateTime date = now.Date; // If you really need it

请注意,我的代码仅调用 DateTime.Now 一次,而不是一次持续几小时,然后一次持续几分钟1。这意味着,如果您在接近(例如)上午 8 点时调用该时间,您可能会得到 7:59,也可能会得到 8:00 - 但您不会得到 7:00 或 8:59,如果您有以下任何一个,您就可以获得:

// Bad option 1 (could get 7:00)
int hour = DateTime.Now.Hour;
// Imagine the clock rolls over now...
int minute = DateTime.Now.Minute;

// Bad option 1 (could get 8:59)
int minute = DateTime.Now.Minute;
// Imagine the clock rolls over now...
int hour = DateTime.Now.Hour;

您还应该考虑根本不直接使用 DateTime.Now。它有两个问题:

  • 它返回本地时区的时间;这对于桌面应用程序来说可能没问题,但对于服务器端应用程序来说就不好了
  • 很难测试

如果您创建一个 IClock 接口(interface)或类似的接口(interface),它具有为您提供当前 UTC 时间的方法或属性,那么如果您愿意,您可以随时将其转换为本地时间(明确地说,这不是' t true 相反),您还可以注入(inject)一个虚假的实现以用于测试目的。

编辑:一个简短但完整的程序来证明是的,这段代码确实确实工作:

using System;

public class Test
{
static void Main(string[] args)
{
DateTime now = DateTime.Now;
int hour = now.Hour;
int minute = now.Minute;
Console.WriteLine(hour);
Console.WriteLine(minute);
}
}

现在在我的机器上,打印 7,然后打印 35。如果它打印 0,然后打印 0,那么在你的机器上一定是午夜。

<小时/>

1 正如您可能注意到的,我已向所有继续执行此操作的答案添加了评论。如果这看起来像垃圾邮件,我深表歉意,但我想引起那些回答者的注意 - 这是一个常见的错误,我想帮助消除这个错误。如果没有评论,发帖者可能会继续前进而不再查看......

关于.net - 获取 .NET 中的日期和时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9630308/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com