<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())