Angular-带有 ISO 字符串的时刻
Angular-moment with ISO string
我正在使用 angular-moment 中的 amCalendar 过滤器在视图中显示时刻。
- p.example:“今天 2:30 上午”。
amCalendar 过滤器不接受 Date 作为类型。我创建了这个函数 returns 短日期 ISO 字符串 传递 日期参数 :
function toShortISO(d){
var date;
date instanceof Date?
date = d:
date = toDate(d);
function pad(n) {return n<10 ? '0'+n : n}
return date.getUTCFullYear()
+ pad( date.getUTCMonth() + 1 )
+ pad( date.getUTCDate() )
+ 'T' + pad( date.getUTCHours() )
+ pad( date.getUTCMinutes() )
+ pad( date.getUTCSeconds() )
+ 'Z';
}
传递日期,此函数 returns 20150905T060000Z
(每个示例)。现在我可以用这个字符串应用 amCalendar 过滤器了。
视图中按预期显示“今天 2:30 AM”,但控制台中出现此警告:
参考:https://github.com/moment/moment/issues/1407
在参考资料中解释说必须创建一个 moment 对象来解决这个问题,但我不知道如何,我认为这个例子是针对 nodeJS 而不是 angularJS。
我试试这个:
function toShortISO(d){
return moment(d.toISOString());
}
但是不行。
有什么建议吗?
谢谢!
要消除警告,您需要:
传入日期字符串的 ISO 格式版本:
moment('2014-04-23T09:54:51');
传入你现在的字符串,但是告诉Moment这个字符串是什么格式:
moment('Wed, 23 Apr 2014 09:54:51 +0000', 'ddd, DD MMM YYYY HH:mm:ss ZZ');
将您的字符串转换为 JavaScript 日期对象,然后将其传递给 Moment:
moment(new Date('Wed, 23 Apr 2014 09:54:51 +0000'));
最后一个选项是 Moment 目前支持的内置回退,带有已弃用的控制台警告。他们说他们不会在未来的版本中支持这种回退。他们解释说使用 new Date('my date') 太不可预测了。
基本上你需要告诉 moment 如何解析你的日期格式,就像这样:
var parsedDate = moment.utc("150423160509", "YYMMDDHHmmss");
var a = parsedDate.tz("Asia/Taipei");
// I'm assuming you meant HH:mm:ss here
console.log( a.format("YYYY-MM-DD HH:mm:ss") );
我正在使用 angular-moment 中的 amCalendar 过滤器在视图中显示时刻。
- p.example:“今天 2:30 上午”。
amCalendar 过滤器不接受 Date 作为类型。我创建了这个函数 returns 短日期 ISO 字符串 传递 日期参数 :
function toShortISO(d){
var date;
date instanceof Date?
date = d:
date = toDate(d);
function pad(n) {return n<10 ? '0'+n : n}
return date.getUTCFullYear()
+ pad( date.getUTCMonth() + 1 )
+ pad( date.getUTCDate() )
+ 'T' + pad( date.getUTCHours() )
+ pad( date.getUTCMinutes() )
+ pad( date.getUTCSeconds() )
+ 'Z';
}
传递日期,此函数 returns 20150905T060000Z
(每个示例)。现在我可以用这个字符串应用 amCalendar 过滤器了。
视图中按预期显示“今天 2:30 AM”,但控制台中出现此警告:
参考:https://github.com/moment/moment/issues/1407
在参考资料中解释说必须创建一个 moment 对象来解决这个问题,但我不知道如何,我认为这个例子是针对 nodeJS 而不是 angularJS。
我试试这个:
function toShortISO(d){
return moment(d.toISOString());
}
但是不行。
有什么建议吗?
谢谢!
要消除警告,您需要:
传入日期字符串的 ISO 格式版本:
moment('2014-04-23T09:54:51');
传入你现在的字符串,但是告诉Moment这个字符串是什么格式:
moment('Wed, 23 Apr 2014 09:54:51 +0000', 'ddd, DD MMM YYYY HH:mm:ss ZZ');
将您的字符串转换为 JavaScript 日期对象,然后将其传递给 Moment:
moment(new Date('Wed, 23 Apr 2014 09:54:51 +0000'));
最后一个选项是 Moment 目前支持的内置回退,带有已弃用的控制台警告。他们说他们不会在未来的版本中支持这种回退。他们解释说使用 new Date('my date') 太不可预测了。
基本上你需要告诉 moment 如何解析你的日期格式,就像这样:
var parsedDate = moment.utc("150423160509", "YYMMDDHHmmss");
var a = parsedDate.tz("Asia/Taipei");
// I'm assuming you meant HH:mm:ss here
console.log( a.format("YYYY-MM-DD HH:mm:ss") );