InvalidPipeArgument:“无法转换” 2018-01-01-12:12:12:123456"进


 <td>{{suite.testSuiteAttributes && 
       suite.testSuiteAttributes.modifiedTimestamp | date: 'yyyy-MM-dd'
     }}
</td>

我想要" 05-FEB-2018 11:00:00 PM CST" CST格式的日期格式。但是获取错误:

无法将" 2018-01-01-12:12:12:123456"转换为管道的日期' 'datepipe

我认为是由于时间戳不采用日期格式的事实。但是仅从后端获得这个日期。请建议。

我认为您从服务器获得了错误的格式日期。您需要一个有效格式的日期来转换

因此,这是我写过 myDateParser() 的方法的解决方法,将无效日期转换为有效日期的方法。

your.component.ts

import { Component } from '@angular/core';
@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ]
})
export class AppComponent  {
  name = 'Angular';
  modifiedTimestamp;
 constructor(){
   // Passing unformatter date
   this.modifiedTimestamp = this.myDateParser('2018-01-01-12:12:12:123456');
 }
 /**
  * Custom Date parser
  */
  myDateParser(dateStr : string) : string {
    // 2018-01-01T12:12:12.123456; - converting valid date format like this
    let date = dateStr.substring(0, 10);
    let time = dateStr.substring(11, 19);
    let millisecond = dateStr.substring(20)
    let validDate = date + 'T' + time + '.' + millisecond;
    console.log(validDate)
    return validDate
  }
}

your.component.html

  <table>
    <tr>
     <td>{{modifiedTimestamp |  date: 'yyyy-MM-dd'}}</td>
    </tr>
   </table>

stackblitz上的解决方案

希望这会有所帮助!

使用有效的日期格式或编写自定义解析器。

您可以使用正则拨号,也可以使用其他答案所示的字符串函数。

JavaScript中的日期将位于浏览器的本地时区,即用户的系统时间,没有本机在不同时区中创建日期。您可以在UTC中创建一个日期,并使用toLocaleString()将其转换为特定的时区。取决于从后端发送的日期是否在UTC或CT中。如果是CT,则仅适用于CT时区中的用户。

let result = "2018-01-01-12:12:12:123456".match(/(d{4})-(d{2})-(d{2})-(d{2}):(d{2}):(d{2}):(d{3})/).map(x => parseInt(x, 10));
result.shift();
console.log(new Date(...result).toLocaleString())

相关内容

  • 没有找到相关文章

最新更新