gpt4 book ai didi

javascript - 带 ISO 弦的 Angular 矩

转载 作者:行者123 更新时间:2023-12-02 15:44:21 28 4
gpt4 key购买 nike

我正在使用 angular-moment 中的 amCalendar 过滤器在 View 中显示时刻。

  • p.example:“今天凌晨 2:30”

amCalendar 过滤器不接受日期作为类型。我创建了这个函数,它返回传递日期参数短日期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';
}

传递一个日期,此函数返回20150905T060000Z(每个示例)。现在我可以使用此字符串应用 amCalendar 过滤器。

View 中按预期显示“Today 2:30 AM”,但控制台中出现此警告:

Console warning

引用:https://github.com/moment/moment/issues/1407

在引用文献中解释说有必要创建一个时刻对象来解决这个问题,但我不知道如何做,我认为这个例子是针对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 Date 对象,然后将其传递到 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") );

关于javascript - 带 ISO 弦的 Angular 矩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32330492/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com