【问题标题】:DateTime.UtcNow and DateTime.Now returned wrong timeDateTime.UtcNow 和 DateTime.Now 返回错误的时间
【发布时间】:2018-06-03 12:06:33
【问题描述】:

我在 c# 中使用 DateTime.UtcNowDateTime.Now 但它们都返回错误的小时和分钟。

我的正确时间是 23:04,返回时间是 20:34 或类似的时间

我把这段代码放在 DateTime 函数之前:

System.Globalization.CultureInfo.CurrentCulture.ClearCachedData();

但同样...

我能做什么?

【问题讨论】:

  • 因为这些经过万亿次测试的属性极不可能出现如此明显的错误,请您再次检查您的机器的时间并发布您用于将值显示为字符串的代码吗?
  • ...或类似的东西
  • 您没有提供太多信息。 2:30 的差异对应于以色列(根据您的个人资料,您可能在哪里?)和阿富汗之间的时区距离。你有任何理由认为机器的区域设置或物理位置与阿富汗有关吗?
  • 您尝试清除CultureInfo 上的缓存,但CultureInfo 拥有一种语言,有时还拥有一个国家/地区。这不足以给出时区,因为有些国家跨越多个时区。您必须在其他地方搜索信息。 TimeZoneInfo.Local.ToString() 返回什么?正如其他人所问的,你如何格式化你的DateTimeDateTime.Now.ToString("o") 给了什么?使用"o",当DateTime 实例的.Kind 等于Local 时,您将看到一个时区提示(与TimeZoneInfo.Local 相关)。向我们提供更多信息。
  • 你知道DateTime.UtcNowDateTime.Now的区别吗? @kfir

标签: c# datetime utc


【解决方案1】:

您的问题不是很清楚您的时区是什么?对于太平洋标准时区使用,您可以根据您的要求更改字符串名称,还可以 PS 重新检查您的系统时间。

TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow,
  TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"));

【讨论】:

    【解决方案2】:

    您需要检查计算机的时间和时区设置。您有以下两种选择之一:

    1) 代码:

    Console.WriteLine(string.Concat("DateTime.Now: ", DateTime.Now.TimeOfDay));
    Console.WriteLine(string.Concat("DateTime.UtcNow: ", DateTime.UtcNow.TimeOfDay));
    Console.WriteLine(string.Empty);
    
    string tziString = TimeZoneInfo.Local.Id;
    
    Console.WriteLine(string.Concat(tziString, ": ", 
        TimeZoneInfo.ConvertTime(DateTime.Now, TimeZoneInfo.FindSystemTimeZoneById(tziString)).TimeOfDay));
    
    Console.WriteLine(string.Concat("UTC Offset: ", TimeZoneInfo.Local.GetUtcOffset(DateTimeOffset.Now)));
    

    结果:

    2) 右击任务栏右侧的日期和时间,点击“调整日期/时间”:

    如果时区设置不正确,您必须通过选项 2 来更改它,所以这将是我开始使用的选项。

    【讨论】:

      猜你喜欢
      • 2020-09-12
      • 2010-09-08
      • 2018-06-15
      • 2015-06-20
      • 2021-04-11
      • 1970-01-01
      • 2015-04-18
      • 2019-02-05
      • 2018-02-11
      相关资源
      最近更新 更多