cho*_*bo2 39 c# asp.net asp.net-mvc timezone
在我的网站上,我需要知道人们所在的时区,以便在适当的时间向他们显示消息.我不太确定在如何执行此操作的教程方面要搜索什么.
我打算做的是:当用户访问我的网站时,他们将通过从下拉列表中选择来设置他们的时区.我将他们的设置存储在我的数据库中,并用它来计算时间.
我不确定我需要什么.我的数据库时间应该存储什么?我在某处读到它应该存储为UTC.如何设置我的数据库来执行此操作?此外,我将在一个共享主机站点,所以它必须以我能做到的方式设置(可能通过webconfig?).
接下来,我需要一个包含所有时区的列表,作为HTML帮助程序或常规HTML.我真的不想做一个.
然后,就像我说的,我需要一个教程,告诉我该怎么做.我认为这是从那时起添加和减去的东西,但我可能是错的.
wom*_*omp 36
为此,您绝对应该将您的时间戳以UTC格式存储在数据库中.
当您需要在站点上显示数据库中的日期时,您可以执行以下操作:
DateTime stamp = /* get datetime from the database here, make sure you
use the constructor that allows you to specify the
DateTimeKind as UTC. */
//E.g.
//DateTime stamp = new DateTime(2009, 12, 12, 12, 12, 12, DateTimeKind.Utc);
timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(" /* users time zone here */");
var convertedTime = TimeZoneInfo.ConvertTime(stamp, timeZoneInfo);
//Print out the date and time
//Console.WriteLine(convertedTime.ToString("yyyy-MM-dd HH-mm-ss"));
Run Code Online (Sandbox Code Playgroud)
时区列表已在.Net中提供,因此您可以看到有关如何枚举它们的帖子.对于ASP.Net MVC,您不希望打印超时,而是希望将转换后的日期时间分配给模型类的属性,以便View可以将其用于显示.
我不能强调使用UTC存储和处理您编写的任何应用程序的重要性.即使您知道应用程序将仅在单个时区中使用,因此夏令时问题仍然比使用本地时区更容易使用UTC.
在数据库级别,您真的没什么需要做的.只需创建一个普通的日期时间列,但要确保明确记录该列是否为UTC.
老实说,asp.net不是我的专长,但我想你可以从客户端请求中获取时区.实际上,因为夏令时规则可能非常模糊,具体取决于区域,使用计算UTC偏移量的java脚本并使用它来进行转换可能更好.即使在2005年的能源政策法案之后,仍然存在一些DST规则的例外情况,这些规则在服务器端很难处理.但是,我认为你想让客户设置自己的时区在大多数情况下都能正常运行.
| 归档时间: |
|
| 查看次数: |
13753 次 |
| 最近记录: |