MVC C# - 用户从特定时区创建日期

时间:2016-01-07 19:50:38

标签: c# asp.net-mvc datetime

在我的程序中,我有一个创建屏幕,用户将在其中输入新的开始和结束日期/时间。用户有一个配置文件,指定他们想要工作的时区。我不希望它相对于他们的本地时区。

我想要做的是获取用户输入的开始和结束日期/时间,并根据用户配置文件设置时区将其转换为UTC。因此,如果用户的个人资料设置为东部标准时间,并且他们特定的开始日期为1/8/16 12:00,我希望将其从EST转换为UTC。我不希望日期“1/8/16 12:00”成为系统的日期或当地时间。当用户的输入转换为UTC时,我似乎无法弄清楚如何将“1/8/16 12:00”定义为EST。

这有意义吗?如果您需要更多信息/示例,请与我们联系。

2 个答案:

答案 0 :(得分:0)

您可以使用UTC format保存数据库/ nosql数据库/文件/ etc中的所有日期,可以通过以下几种方式执行此操作:

Console.WriteLine(date1.ToUniversalTime());
Console.WriteLine(TimeZoneInfo.ConvertTimeToUtc(date1))

在服务器中执行查询并以UTC格式发送日期,您可以通过使用javascript格式化它在特定时区将其呈现给客户端,有几个库可以帮助您在我的顶部执行该操作head是moment.js,这可能有点过分,但在其他可能需要修改日期的情况下可能会有所帮助。

看一下这个small example作为参考,它将显示类似于" 2天前的#34;,它看起来更人性化,更具可读性。

无论如何,这个想法。

答案 1 :(得分:0)

您可以随时通过转换将日期存储在数据库中,无论用户的时区是什么,并且您已经拥有用户的时区信息,您可以再次将其从UTC转换为用户的实际时区,同时根据需要将其显示给用户。 所以要存储在数据库中,

DateTime userStartDate = new DateTime(2016, 8, 16, 12, 0, 0);
DateTime utcStartDate = TimeZoneInfo.ConvertTimeToUtc(userStartDate);

然后从数据库输出

DateTime actualStartDate = TimeZoneInfo.ConvertTimeFromUtc(utcStartDate, destinationTimeZone);
相关问题