fra*_*lic 7 javascript time timezone datetime
我有一个Web应用程序,在每个页面上显示日期时间戳,例如:
2009年12月12日下午6点
我想动态检测用户的时区并使用JavaScript更改显示.
所以纽约用户会看到:
2009年12月12日下午6点
加州用户会看到:
2009年12月12日下午3:00
有什么建议?
您可以使用Date.getTimeZoneOffset()从GMT获取本地偏移量.
var date = new Date();
var offset = date.getTimezoneOffset();
Run Code Online (Sandbox Code Playgroud)
从那里它是一个SMOP.使用Javascript Date对象,您可以调用date.toDateString以获取人类可读日期.如果您需要服务器端,请让Javascript通过GET或POST将偏移量发送到您的服务器.
格式化日期是另一回事.Javascript并没有提供太多的内置.你可以自己破解它,但那样的错误和疯狂就在于此.日期格式化是任何好的Javascript库应该提供的东西.例如,JQuery具有Datepicker.formatDate.
以下是如何使用精彩的“渐进增强”来做到这一点:
输出您希望其出现的日期,但请务必指定其时区(我在这里使用 GMT,但您可以使用 UTC 等)。然后将其与加载时的本地时间交换(如果提供了原始时区,则由 JavaScript 自动处理)。
<div id="timestamp">December 12, 2009 6:00 pm GMT</div>
<script type="text/javascript">
var timestamp = document.getElementById('timestamp'),
t = new Date(timestamp.innerHTML),
hours = t.getHours(),
min = t.getMinutes() + '',
pm = false,
months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
if(hours > 11){
hours = hours - 12;
pm = true;
}
if(hours == 0) hours = 12;
if(min.length == 1) min = '0' + min;
timestamp.innerHTML = months[t.getMonth()] + ' ' + t.getDate() + ', ' + t.getFullYear() + ' ' + hours + ':' + min + ' ' + (pm ? 'pm' : 'am');
</script>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16220 次 |
| 最近记录: |