Ali*_*ias 4 javascript date angularjs
我在使用支持日后缀的自定义过滤器在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);
};
Run Code Online (Sandbox Code Playgroud)
这适用于Chrome,我将以下内容传递到我的模板中,并获得预期日期:
{{ date.date_utc | DateFilter:'EEEE MMMM doo yyyy' | uppercase }}
=
SATURDAY NOVEMBER 1ST 2014
在Firefox/Safari上,它返回为:
UNDEFINED UNDEFINED NANTH 0NAN
从这里和这里开始研究表明我需要将ISO时间或时间戳传递到我的Date
对象中.
我似乎已经在做这个了.getTime()
.我也尝试过.toISOString()
,但这甚至都没有在Firefox/Safari中返回任何内容!
有任何想法吗?
Ali*_*ias 10
似乎Firefox/Safari没有解析.toISOString()
成'正确'的格式......
input = input.replace(/(.+) (.+)/, "$1T$2Z");
input = new Date(input).getTime();
Run Code Online (Sandbox Code Playgroud)
现在,它将其解析为正确的ISO格式,然后成功解析.
归档时间: |
|
查看次数: |
3364 次 |
最近记录: |