我有每一页上显示的日期时间邮票的Web应用程序,例如:显示日期/时间用户的时区 - 在客户端
2009年12月12日下午6:00
我想动态检测用户的时区并使用JavaScript更改显示。
所以纽约用户将看到:
2009年12月12日下午6:00
虽然加州用户将看到:
2009年12月12日3 :00 pm
有什么建议吗?
我有每一页上显示的日期时间邮票的Web应用程序,例如:显示日期/时间用户的时区 - 在客户端
2009年12月12日下午6:00
我想动态检测用户的时区并使用JavaScript更改显示。
所以纽约用户将看到:
2009年12月12日下午6:00
虽然加州用户将看到:
2009年12月12日3 :00 pm
有什么建议吗?
这里是你如何能与精彩的“渐进增强”做到这一点:
输出,你希望它出现的日期,但一定要指定其时区(我用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>
我怀疑IE会正确解析这种格式。 – Bergi 2013-02-08 13:51:51
@Bergi - 它在IE8下工作+ – 2013-02-25 19:30:51
在IE 11中不起作用 – 2015-03-17 20:56:09
您可以使用Date.getTimeZoneOffset()从GMT获取本地偏移量。
var date = new Date();
var offset = date.getTimezoneOffset();
从那里有一个SMOP。使用Javascript Date对象,您可以拨打date.toDateString
来获取人类可读的日期。如果您需要服务器端,请使用GET或POST将Javascript偏移量发送到您的服务器。
格式化日期是另一回事。 Javascript并没有提供太多的内置功能。你可以自己破解它,但这种方式的错误和疯狂的谎言。日期格式化是任何好的Javascript库应该提供的。例如,JQuery有Datepicker.formatDate。
我们使用ExtJS库,里面有关于日期和时间,它可以帮助你很多的功能。事实上,在我的Mozilla Firefox上,它根据浏览器时区显示所有日期和时间。
http://prideparrot.com/blog/archive/2011/9/how_to_display_dates_and_times_in_clients_timezone – VJAI 2011-09-26 07:31:08