【问题标题】:How to correct the system time and date programmatically in c#如何在 C# 中以编程方式更正系统时间和日期
【发布时间】:2017-11-20 05:58:21
【问题描述】:

由于当前日期时间已过时,我无法在数据库中存储时间。我如何以编程方式更改系统的日期和时间,以便即使系统日期和时间不正确,存储的值也应该是正确的。我使用了时区,但它没有帮助,因为它获得了系统上设置的相同时间和日期。

var euTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Pakistan Standard Time");

DateTime euTime = TimeZoneInfo.ConvertTime(System.DateTime.Now, TimeZoneInfo.Local, euTimeZone);

TimeSpan timeOfDay = euTime.TimeOfDay;

【问题讨论】:

  • 简而言之:这不关你的事!至少它不是您的应用程序的任务。在系统中配置时间同步以解决此错误。应用可以检测到错误,但无法处理!
  • 您的意思是每个系统都必须手动更正日期和时间?就像你提到的时间同步一样。
  • 您不会“手动”更正系统时间。这就是 NTP 的用途和 @TomSchardt 所指的。
  • @user100020 - 请澄清一下,您是说您不想相信您自己的服务器时钟设置正确(这将是操作系统问题)?还是它们设置正确但您想转换为特定时区(这将是代码问题)?

标签: c# asp.net timezone


【解决方案1】:

您无法修改系统日期时间,但您可以选择使用 API 获取特定时区的日期时间。如果您知道客户端的时区,那么仅向此 Web API 发送位置应该会返回该区域的正确时间,而与系统上的本地时间无关。

对于 Web API,您可以使用 https://developers.google.com/maps/documentation/timezone/intro

【讨论】:

  • 每当有一个多时区应用程序时,我倾向于在后端使用 UTC 作为时间。
  • @TomSchardt 我同意,但如果系统时间有问题,那么我们将得到 UTC 也错误,我们也不会知道客户端时区。
  • 我同意你的看法!
猜你喜欢
  • 2016-04-20
  • 1970-01-01
  • 2010-10-13
  • 2018-08-29
  • 2011-07-30
  • 2015-06-19
  • 1970-01-01
  • 2018-03-03
相关资源
最近更新 更多