Mar*_*cus 9 php asp.net timezone datetime date
我了解最佳做法是将UTC日期/时间存储在我们的数据库中,并以当地时区显示给用户.我们将存储时区而不是偏移量,以便我们可以支持夏令时.
什么方法最适合处理时区?
以HTML格式发送到浏览器的所有日期均为UTC.客户端将使用moment.js或类似方式将UTC时间转换为正确的时区.将使用我们数据库中指定的时区而不是浏览器本地时间,因为这可能是不正确的.
当用户提交日期或时间时,必须先将其转换为UTC时间,然后再提交给服务器.
所有计算仍以UTC格式进行,日期/时间在最后可能的时刻转换为正确的时区,例如以HTML格式输出日期时.
当客户端提交任何日期/时间时,应立即转换为UTC.
Mat*_*int 12
两种选择都是有效的,但每种方法都有优点和缺点.有几件事需要考虑:
JavaScript的本机时区转换仅限于其运行的计算机的本地时区,并且也严重受损.如果您计划在客户端中转换值,则需要此处列出的时区库之一.我个人推荐时刻时区.
在客户端(使用任何库)中转换值将需要时区数据,如果要支持世界的所有时区,这可能会有些大.您可能需要考虑将数据限制为满足您要求的最小子集.
服务器端时区转换还需要有效的时区数据.PHP内置了这一功能,您可以随时了解PECL中timezonedb软件包的更新.
您还使用ASP.Net标记了您的问题..Net包含TimeZoneInfo,仅提供对Microsoft时区的支持.如果您需要标准的IANA时区(如PHP中使用的那些时区),那么您将需要一个库.我推荐Noda Time.您可以在时区标签wiki中阅读有关不同时区的更多信息.
如何交付最终结果取决于您正在编写的应用程序类型.
如果您要创建一个"传统"网页,HTML将在服务器端呈现,那么您将呈现一个人类可读的字符串.这意味着不仅要了解时区,还要了解用户的语言环境,以便您可以使用文化上适当的格式.
这与时区完全无关.例如,您可能和美国人使用MM/DD/YYYY格式,但仍然在物理上位于欧洲并使用欧洲时区.
如果您的服务器通过API(即JSON,XML等)提供结果,那么您的结果应该是机器可读的.最好使用ISO 8601格式.具体而言,应按RFC 3339中的描述提供时间戳.
这意味着它们应始终包含a Z(对于UTC值)或偏移量(对于本地值).因此,您可以考虑用户的时区,但您提供的结果应包括本地偏移,因此它是明确的.
例如,你有UTC值2014-07-09T12:00:00Z,然后是America/Los_Angeles它的2014-07-09T05:00:00-07:00,那就是应该通过API传递的内容.
在客户端,您可以使用像moment.js这样的库为用户呈现该值.例如:
var s = moment.parseZone("2014-07-09T05:00:00-07:00").format("LLL");
Run Code Online (Sandbox Code Playgroud)相关: 如何正确使用Timezone?
| 归档时间: |
|
| 查看次数: |
3670 次 |
| 最近记录: |