关于按用户时区存储和显示日期和时间

时间:2015-08-28 09:19:10

标签: asp.net sql-server datetime

StackOverflow和forum.asp.net等多少在线论坛会显示问题并发布带有日期和时间的答案?

他们如何将日期和时间存储到sql server表中?

他们是否以UTC格式存储日期和时间?

有时论坛会在8小时前提出问题,并在6.10分钟前发布答案。

他们如何区分从当前日期和时间开始的utc日期和时间? 以及他们如何从用户时区时间中存储utc日期和时间?

假设我的网站和数据库托管在美国服务器上。 假设有人在8月21日早上9点34分从印度问了一个问题,并且在晚上8月20日从美国发布了答案,但论坛显示的信息如下:

问题发布于8月21日9:34

并于8月21日9:38发布了答案

怎么可能? 它显示正确的日期和时间吗?

请讨论我们应该如何在UTC格式的sql server db中存储日期和时间,以及如何显示不会在读者心中造成混淆的结果。

使用概念和示例指导我。人们无需登录即可访问任何论坛问题。那么服务器将如何知道用户来自哪个国家以及用户时区是什么?在asp.net中,我们可以从服务器端知道什么是用户时区吗?

当用户请求页面时,我们可以从文件代码中知道什么是用户时区?

我看到论坛在将html传输到客户端之前在服务器端生成了发布的问题和答案的日期和时间信息。那么任何网站如何知道用户请求页面的时区。如果可能,那么我们可以将日期和时间转换为用户时区。

寻找指南。感谢

1 个答案:

答案 0 :(得分:0)

一般来说,日期和时间应以UTC格式存储,并且仅在UI层中显示为本地时间。

StackOverflow使用客户端JavaScript对此进行转换:

<span title="2015-08-28 09:19:09Z" class="relativetime" />

<span title="2015-08-28 09:19:09Z" class="relativetime">24 mins ago</span>

timeago是一个执行此技巧的jQuery插件的示例。)

这是因为JavaScript正在执行客户端这一事实,因此它知道“浏览器”的时区是什么。

从ASP.NET Web应用程序中确定时区是tricky