Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MVC#-用户根据特定时区创建日期_C#_Asp.net Mvc_Datetime - Fatal编程技术网

MVC#-用户根据特定时区创建日期

MVC#-用户根据特定时区创建日期,c#,asp.net-mvc,datetime,C#,Asp.net Mvc,Datetime,在我的程序中,我有一个创建屏幕,用户将在其中输入新的开始和结束日期/时间。用户有一个配置文件,用于指定他们要在其中工作的时区。我不希望这与他们当地的时区有关 我想做的是获取用户输入的开始和结束日期/时间,并根据其用户配置文件设置时区将其转换为UTC。因此,如果用户的配置文件设置为东部标准时间,并且他们指定了开始日期1/8/16 12:00,我希望将其从东部标准时间转换为UTC。我不希望日期“1/8/16 12:00”是系统的日期或其本地时间。当从用户输入转换为UTC时,我似乎不知道如何将“1/8

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

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


这有意义吗?如果您需要更多信息/示例,请告诉我。

您可以使用以下两种方法保存数据库/nosql数据库/文件/etc中的所有日期:

Console.WriteLine(date1.ToUniversalTime());
Console.WriteLine(TimeZoneInfo.ConvertTimeToUtc(date1))
在服务器中执行查询并以UTC格式发送日期您可以通过使用javascript格式化在特定时区将其呈现给客户端,有几个库可以帮助你做到这一点,我脑海中的一个库可能有点过头了,但在其他需要修改日期的场景中可能会有所帮助

把它作为参考,它将显示类似“2天前”的内容,看起来更人性化,可读性更强


无论如何,这就是想法。

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

DateTime userStartDate = new DateTime(2016, 8, 16, 12, 0, 0);
DateTime utcStartDate = TimeZoneInfo.ConvertTimeToUtc(userStartDate);
DateTime actualStartDate = TimeZoneInfo.ConvertTimeFromUtc(utcStartDate, destinationTimeZone);
然后从数据库输出

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

您不能将偏移量存储为您选择的时区首选项的一部分吗?另外,要注意可能出现的夏令时,这会有点混乱。在用户的浏览器上进行。您可以在那里轻松获取日期的UTC值,然后将其发布到服务器端应用程序。@Jasen:这似乎无法解决应用程序时区设置的问题,而不是应用操作系统(用户)时区的问题。(只是,现在您得到的是客户端操作系统时区,而不是服务器操作系统时区)