gpt4 book ai didi

Angularjs 日期过滤器和 moment js 在格式化年份时返回年份 '1970'

转载 作者:行者123 更新时间:2023-12-03 07:58:00 24 4
gpt4 key购买 nike

我有一个从服务器获取的对象,该对象有一个属性:obj.year: "2017",例如。该属性是一个数字。我只需要显示年份的最后两位数字。当我将其格式化为 HTML 时,如下所示:

{{obj.year | date : 'yy'}}

它显示:70。我尝试了各种内置的 Angular 年份过滤器,并使用 moment js 格式化函数进行了尝试:

  function formatYear(year) {
return moment(year).format('YY');
}

但它仍然返回年份1970。我不明白为什么今年又回来了,而且只有在格式化时才会出现这种情况?如果我不对其应用任何格式,它将返回对象的正常值 - 2017

最佳答案

date 的文档过滤器解释了为什么会发生这种情况。它期望您提供的值是 Date 对象、日期字符串或以毫秒为单位的数字。

这是他们的描述:

Date to format either as Date object, milliseconds (string or number) or various ISO 8601 datetime string formats (e.g. yyyy-MM-ddTHH:mm:ss.sssZ and its shorter versions like yyyy-MM-ddTHH:mmZ, yyyy-MM-dd or yyyyMMddTHHmmssZ). If no timezone is specified in the string input, the time is considered to be in the local timezone.

您得到 1970 的原因是 b/c date 过滤器正在获取您的年份 2017,并将其解释为自纪元或 unix time 以来的毫秒数.

要使date过滤器发挥作用,您只需将年份值转换为Date(或使用moment时的类似方法):

var date = new Date(obj.year, 0,1); // Jan 1

关于Angularjs 日期过滤器和 moment js 在格式化年份时返回年份 '1970',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42421686/

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