【问题标题】:Format date with angular2 moment用angular2矩格式化日期
【发布时间】:2017-05-20 16:27:40
【问题描述】:

使用来自angular2-moment 的amTimeAgo 管道时出现以下错误。

弃用警告:提供的值不是可识别的 RFC2822 或 ISO 格式。
moment 构造回退到 js Date(),这在所有浏览器和版本中并不可靠。
不鼓励使用非 RFC2822/ISO 日期格式,并将在即将发布的主要版本中删除。
请参考http://momentjs.com/guides/#/warnings/js-date/了解更多信息。
论据: [0] _isAMomentObject: true, _isUTC: false, _useUTC: false, _l: undefined, _i: 21-03-2017, _f: undefined, _strict: undefined, _locale: [object Object]

管道也在打印Invalid date。

我是这样使用它的: <span class="date-created"> {{ job.createdAt | amTimeAgo }} </span>

job.createdAt 的值是字符串,格式为:22-03-2017。

我知道格式有问题,但不知道如何将自定义格式 ('DD-MM-YYYY') 传递给管道,以便 moment 包和这个角度库可以识别它。

有什么想法吗?

【问题讨论】:

  • 这里有一个相对时间的自定义管道。看看这个post

标签: angular momentjs angular2-moment


【解决方案1】:

我猜,字符串没有正确转换为日期。您可以尝试以下两个选项:

{{job.createdAt |  date:'MM/dd/yyyy' | amTimeAgo }}

或在您的打字稿文件中将字符串转换为日期:

let newDate = new Date(job.createdAt);

【讨论】:

  • 由于某种原因,它不适用于管道。我必须先使用 momentjs 解析它。谢谢!
【解决方案2】:

创建一个新的 moment 对象以将其传递到管道中怎么样,例如:

let newMomentObj = moment(job.createdAt, 'DD-MM-YYYY'); 

在您的 html 文件中:

<span class="date-created"> {{ newMomentObj | amTimeAgo }} </span>

【讨论】:

    【解决方案3】:

    从版本1.4.0amParse引入的angular2-moment管道:

    将自定义格式的日期解析为可与其他管道一起使用的时刻对象

    在您的情况下,您可以执行以下操作:

    <span class="date-created"> {{ job.createdAt | amParse:'DD-MM-YYYY' | amTimeAgo }} </span>
    

    这样您就可以直接在视图中解析日期字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-18
      • 1970-01-01
      相关资源
      最近更新 更多