在我的网站上,我需要知道人们所在的时区,以便在正确的时间向他们显示消息.我不太确定在一篇关于如何做到这一点的教程中要搜索什么.

我计划做的是:当用户来到我的网站时,他们会通过从下拉列表中 Select 来设置时区.我将把他们的设置存储在我的数据库中,并用它来计算时间.

我不确定我需要什么.我的数据库时间应该存储什么?我在某个地方读到,它应该存储为UTC.我如何设置数据库来实现这一点?此外,我将在一个共享的托管网站,所以它必须以我可以做到的方式设置(可能通过webconfig?).

接下来,我需要一个所有时区的列表,作为HTML助手或常规HTML.我真的不想做.

然后,就像我说的,我需要一个教程来告诉我该怎么做.我认为这是在加减时间,但我可能错了.

推荐答案

为此,您一定要在数据库中以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")); 

时区列表已在中提供.净,所以你可以看到this post on how to enumerate them.对于ASP.Net MVC,而不是打印超时,您希望将转换后的日期时间分配给模型类的属性,以便视图可以使用它进行显示.

Asp.net相关问答推荐

包含Include的低速EF核心查询

如何处理当前文件中基本文件中的S onClick方法

如何在 asp.net 服务器中使用字体

如何从 dll 文件中提取类的源代码?

Web API Queryable - 如何应用 AutoMapper?

cookie 存储在系统的什么位置?

忽略默认文档的表单身份验证

stream.CopyTo - 文件为空.网

最佳服务器端 .NET PDF 编辑库

如何在同一解决方案中从 MVC 项目调试 Web API 项目

如何使用 app_GlobalResource 或 app_LocalResource?

以编程方式从后面的代码中关闭 aspx 页面

将新行添加到数据表的顶部

当.NET抛出WebException((400)错误请求)时如何处理WebResponse?

在 Visual Studio 2010 中随机禁用编辑 aspx/ascx 文件?

如何使用 jquery 设置单选按钮 Select 的值

如何将代码中的变量调用到aspx页面

ASP.NET 核心,更改未经授权的默认重定向

字体真棒里面asp按钮

您的下一个 ASP.NET 项目的 Select 是什么:Web 窗体还是 MVC?