我有一些由Django模板渲染的HTML,格式为ISO 8601格式的时间戳,例如:
<span class="my-date">2015-06-04T13:00:00</span>
我正在使用一些Javascript将这个时间戳转换为用户的本地时区:
$(document).ready(function(){
$('.my-date').each( function(){
var tz_date = new Date( $(this).text() );
$(this).text( tz_date.toString() );
});
});
这在Chrome中工作得很好(例如,结果在Thu Jun 04 2015 09:00:00 GMT-0400 (EDT)
),但我在Firefox中有一个问题,它显示Thu Jun 04 2015 13:00:00 GMT-0400 (EDT)
。Firefox似乎正确地附加了用户的时区,但它没有调整时间。
我想在这里检查一下,是否我在代码中做了一些糟糕的假设,或者这是否是Firefox的一个错误。
jsFiddle
与其使用ISO 8601时间戳,不如使用RFC 2822时间戳。Django和javascript的Date.parse()
都与此兼容,Chrome和Firefox的实现也以同样的方式工作。
唯一需要做的改变是在Django模板中呈现时间戳服务器端。与其使用|date:'c'
,不如直接使用|date:'r'
。