我有一个脚本,我试图将UTC日期/时间转换为本地时区。在Chrome和IE / Edge中,这一切似乎都运行良好,但是在Firefox中显示为“无效日期”。堆栈上还有其他几个问题,但似乎没有一个可以解决我的特定需求。
我的脚本这样做了...
获取日期,该日期是Fabrik在Joomla中提出的特定格式。 (我对此格式几乎没有控制权)
它看起来像这样:
2017-07-02 20:57
然后,我将新日期创建为UTC,并将其转换为本地时区。
toLocalString方法:
$(document).ready(function() {
$('.plg-date > .fabrikElement > div').not('.fabrikSubElementContainer').each(function() {
if($(this).text().length > 0) {
var newdate = new Date($(this).text() + " UTC");
var options = {
year: 'numeric',
month: 'numeric',
day: 'numeric',
hour: '2-digit',
minute: '2-digit',
timeZoneName: 'short'
}
$(this).text(newdate.toLocaleString('en-US', options));
}
})
});
moment.js方法:
$(document).ready(function() {
$('.plg-date > .fabrikElement > div').not('.fabrikSubElementContainer').each(function() {
if($(this).text().length > 0) {
var date = new Date($(this).text() + " UTC");
var newdate = moment(date).format('ddd MMM DD YYYY h:mm A')
$(this).text(newdate);
}
})
});
这两种方法都会导致Firefox中的日期无效。建议?
最佳答案
使用一下,您可以使用moment.utc
和local()
:
var newdate = moment.utc($(this).text()).local().format('ddd MMM DD YYYY h:mm A')
moment.utc
将您的输入解析为UTC值,而local()
将其转换为本地时间。关于javascript - 使用.toLocaleString()和moment.js的Firefox中的无效日期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44929926/