【问题标题】:Problem with DateTime.Now on Server服务器上的 DateTime.Now 问题
【发布时间】:2010-10-04 10:56:43
【问题描述】:

我有一个很大的问题,我不知道如何解决它

我创建了一个 Web 应用程序并将其托管在美国服务器上,以及从埃及访问此 Web 应用程序的用户

我在应用程序中使用 DateTime.Now 方法的问题,此方法返回美国服务器的时间,而不是在埃及使用它的机器的时间

我该如何解决这个问题?请尽快帮助我

提前致谢

【问题讨论】:

    标签: c# asp.net hosting web-hosting


    【解决方案1】:

    好吧,您可以先使用DateTime.UtcNow,将那个传送到客户端,然后在客户端执行相关的时区转换。这通常是一种合理的工作方式 - 只要您可以在客户端进行处理(例如在 JavaScript 中)。

    或者,询问用户他们的时区,以便您可以使用TimeZoneInfo 提供使用当地时间的页面。当然,如果您知道所有您的用户都在埃及,您可能只是对其进行硬编码。

    【讨论】:

    • 谢谢 Mr.Jon,你的意思是我必须在我的应用程序中使用 DateTime.UtcNow 方法,然后我可以用埃及的时区定义一个变量,例如 = 2 然后我添加这个每次我将数据插入数据库时​​,为 DateTime.UtcNow 赋值
    • @Amira Elsayed - 除非您的用户始终处于同一时区,否则您可能希望将时间作为通用时间存储在数据库中。
    • @Amira:正如 James 所说,通常将数据库保持在 UTC 是一个好主意。当您显示数据时执行转换。
    • 我已将日期保存为DateTime.UtcNow 并转换为本地时间为@Dirk Vollmar 回答的Arab Standard Time,但stackoveflow 是否也将所有时间存储在UTCNow 中,因为所有用户都是来自不同的时区?
    • @stom:我不确定这是否真的与问题相关,但是是的,我相信 Stack Overflow 会根据 UTC 完成所有工作。
    【解决方案2】:

    您需要将日期时间值转换为用户的时区。一种简单的方法是调用ConvertTime 并传入所需的时区,如下所示:

    DateTime now = TimeZoneInfo.ConvertTime(DateTime.UtcNow, 
        TimeZoneInfo.FindSystemTimeZoneById("Egypt Standard Time"));
    

    【讨论】:

    • hereTime Zone Index Values 来自 msdn,可能对某人有所帮助。
    【解决方案3】:

    使用 UTS 生成时间,使其标准化,然后根据用户的位置或偏好显示。

    您可能还想阅读以下内容: Creating a DateTime in a specific Time Zone in c# fx 3.5

    【讨论】:

      【解决方案4】:

      嗯,您可以使用DateTime.UTCNow,然后转换为当地时间。

      【讨论】:

      • 不能转换为当地时间,因为那将是美国当地的时间。
      • 我的意思是,转换为所需的本地时间。在这种情况下,埃及时间。
      猜你喜欢
      • 2013-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多