首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在客户端时区中显示日期和时间

如何在客户端时区中显示日期和时间
EN

Stack Overflow用户
提问于 2017-08-07 11:33:58
回答 2查看 969关注 0票数 0

假设服务器位于美国(MST),来自Chennai (IST)的用户正在支付费用。服务器和用户都位于不同的时区。MST (山地标准时间)比GMT (格林威治子午时间)晚7小时,印度标准时间( IST )比GMT提前5.30小时,即服务器和用户的时差为12:30小时。如果用户是在9/20/2011上午9:00付款,那么服务器的时间是8/20/2011晚上8:30那么你要在什么时候在数据库中记录呢?如果应用程序将用户的时间存储在数据库中,那么如果来自美国的人看到事务可能会看到错误的时间,即8/20/2011晚上8:30另一个选择是将服务器的时间存储在数据库中(这是我们通常所做的),那么用户会不高兴看到错误的时间。

你能帮帮我吗。太见不得人了。

EN

回答 2

Stack Overflow用户

发布于 2017-08-07 11:38:16

我总是使用UTC时间来记录世界各地的任何计算机/服务器中的一切。

DateTime.UtcNow

然后,当我向某个用户显示日期和时间时,我只需根据他们的本地时区进行更改。

票数 3
EN

Stack Overflow用户

发布于 2017-08-07 12:15:31

在保存任何日期时,将其转换为UTC并保存到数据库中;

代码语言:javascript
复制
var now = DateTime.Now;
var Date = now.ToUniversalTime();

代码语言:javascript
复制
var Date = DateTime.UtcNow;

在显示日期时,获取用户的当前时区并使用它转换UTC日期,

代码语言:javascript
复制
 var _Timezone = // store timezone id here
 var southPole = TimeZoneInfo.FindSystemTimeZoneById(_Timezone);
 DateTime userTime = TimeZoneInfo.ConvertTimeFromUtc(Date , southPole);

您可以将不同用户的时区存储在数据库中,也可以获取登录用户的当前时区;

代码语言:javascript
复制
var _Timezone = new Date().getTimezoneOffset();

此方法不适用于服务器端,

注意事项

您可以从这段代码中获得时区列表,

代码语言:javascript
复制
var timeZones = System.TimeZoneInfo.GetSystemTimeZones();

foreach ( var timeZone in timeZones )
{
    Console.WriteLine( "{0} - {1}", timeZone.Id,  timeZone.DisplayName );
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45545949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档