假设服务器位于美国(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另一个选择是将服务器的时间存储在数据库中(这是我们通常所做的),那么用户会不高兴看到错误的时间。
你能帮帮我吗。太见不得人了。
发布于 2017-08-07 11:38:16
发布于 2017-08-07 12:15:31
在保存任何日期时,将其转换为UTC并保存到数据库中;
var now = DateTime.Now;
var Date = now.ToUniversalTime();或
var Date = DateTime.UtcNow;在显示日期时,获取用户的当前时区并使用它转换UTC日期,
var _Timezone = // store timezone id here
var southPole = TimeZoneInfo.FindSystemTimeZoneById(_Timezone);
DateTime userTime = TimeZoneInfo.ConvertTimeFromUtc(Date , southPole);您可以将不同用户的时区存储在数据库中,也可以获取登录用户的当前时区;
var _Timezone = new Date().getTimezoneOffset();此方法不适用于服务器端,
注意事项
您可以从这段代码中获得时区列表,
var timeZones = System.TimeZoneInfo.GetSystemTimeZones();
foreach ( var timeZone in timeZones )
{
Console.WriteLine( "{0} - {1}", timeZone.Id, timeZone.DisplayName );
}https://stackoverflow.com/questions/45545949
复制相似问题