【发布时间】:2010-10-04 10:56:43
【问题描述】:
我有一个很大的问题,我不知道如何解决它
我创建了一个 Web 应用程序并将其托管在美国服务器上,以及从埃及访问此 Web 应用程序的用户
我在应用程序中使用 DateTime.Now 方法的问题,此方法返回美国服务器的时间,而不是在埃及使用它的机器的时间
我该如何解决这个问题?请尽快帮助我
提前致谢
【问题讨论】:
标签: c# asp.net hosting web-hosting
我有一个很大的问题,我不知道如何解决它
我创建了一个 Web 应用程序并将其托管在美国服务器上,以及从埃及访问此 Web 应用程序的用户
我在应用程序中使用 DateTime.Now 方法的问题,此方法返回美国服务器的时间,而不是在埃及使用它的机器的时间
我该如何解决这个问题?请尽快帮助我
提前致谢
【问题讨论】:
标签: c# asp.net hosting web-hosting
好吧,您可以先使用DateTime.UtcNow,将那个传送到客户端,然后在客户端执行相关的时区转换。这通常是一种合理的工作方式 - 只要您可以在客户端进行处理(例如在 JavaScript 中)。
或者,询问用户他们的时区,以便您可以使用TimeZoneInfo 提供使用当地时间的页面。当然,如果您知道所有您的用户都在埃及,您可能只是对其进行硬编码。
【讨论】:
DateTime.UtcNow 并转换为本地时间为@Dirk Vollmar 回答的Arab Standard Time,但stackoveflow 是否也将所有时间存储在UTCNow 中,因为所有用户都是来自不同的时区?
您需要将日期时间值转换为用户的时区。一种简单的方法是调用ConvertTime 并传入所需的时区,如下所示:
DateTime now = TimeZoneInfo.ConvertTime(DateTime.UtcNow,
TimeZoneInfo.FindSystemTimeZoneById("Egypt Standard Time"));
【讨论】:
Time Zone Index Values 来自 msdn,可能对某人有所帮助。
使用 UTS 生成时间,使其标准化,然后根据用户的位置或偏好显示。
您可能还想阅读以下内容: Creating a DateTime in a specific Time Zone in c# fx 3.5
【讨论】:
嗯,您可以使用DateTime.UTCNow,然后转换为当地时间。
【讨论】: