【发布时间】:2014-11-08 12:38:49
【问题描述】:
我在使用支持日期后缀的自定义过滤器在 Firefox 和 Safari 中正确显示日期时遇到问题。我以以下格式获取 UTC 日期:
yyyy-mm-dd hh-mm-ss
然后我有一个自定义的DateFilter,它将oo 替换为一个后缀,即2nd:
var suffixes = ["th", "st", "nd", "rd"];
return function(input, format) {
input = new Date(input).getTime();
var dtfilter = $filter('date')(input, format);
var day = parseInt($filter('date')(input, 'dd'));
var relevantDigits = (day < 30) ? day % 20 : day % 30;
var suffix = (relevantDigits <= 3) ? suffixes[relevantDigits] : suffixes[0];
return dtfilter.replace('oo', suffix);
};
这适用于 Chrome,我将以下内容传递到我的模板中,并获得预期日期:
{{ date.date_utc | DateFilter:'EEEE MMMM doo yyyy' | uppercase }} =
SATURDAY NOVEMBER 1ST 2014
在 Firefox/Safari 上返回为:
UNDEFINED UNDEFINED NANTH 0NAN
here 和 here 的研究表明我需要将 ISO 时间或时间戳传递到我的 Date 对象中。
我似乎已经通过.getTime() 这样做了。我也尝试过.toISOString(),但这在 Firefox/Safari 中甚至没有返回任何内容!
有什么想法吗?
【问题讨论】:
标签: javascript angularjs date