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

本文关键字:定时区 创建日期 C#- 用户 MVC | 更新日期: 2023-09-27 18:29:21

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

我想做的是获取用户输入的开始和结束日期/时间,并根据其用户配置文件设置时区将其转换为UTC。因此,如果用户的配置文件设置为东部标准时间,并且他们指定了开始日期1/16 12:00,我希望将其从EST转换为UTC。我不希望日期"1/16 12:00"是系统的日期或当地时间。当用户输入转换为UTC时,我似乎不知道如何将"1/16 12:00"定义为EST。

这有道理吗?如果你需要更多的信息/例子,请告诉我。

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

您可以使用UTC格式将所有日期保存在数据库/nosql数据库/文件等中,可以是以下两种方法之一:

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

在服务器中进行查询并以UTC格式发送日期。您可以通过使用javascript对其进行格式化,在特定时区将其呈现给客户端。有几个库可以帮助您做到这一点。我脑海中浮现的一个库是moment.js,它可能有点过头了,但在其他需要修改日期的情况下可能会有所帮助。

看看这个小例子作为参考,它将显示类似"2天前"的内容,看起来更人性化,更可读。

不管怎样,这就是主意。

无论用户的时区是什么,您都可以通过转换将日期存储为数据库中的UTC。由于您已经有了用户的时区信息,您可以在向用户显示时再次将其从UTC转换为用户的实际时区。所以要存储在数据库中,

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

然后从数据库输出,

DateTime actualStartDate = TimeZoneInfo.ConvertTimeFromUtc(utcStartDate, destinationTimeZone);