首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >InvalidPipeArgument:“无法将"2018-01-01-12:12:12:123456”转换为“DatePipe”的日期

InvalidPipeArgument:“无法将"2018-01-01-12:12:12:123456”转换为“DatePipe”的日期
EN

Stack Overflow用户
提问于 2019-03-11 09:12:02
回答 2查看 21.7K关注 0票数 2
代码语言:javascript
复制
 <td>{{suite.testSuiteAttributes && 
       suite.testSuiteAttributes.modifiedTimestamp | date: 'yyyy-MM-dd'
     }}
</td>

我希望“05-2月-2018-2018年11:00 PM CST”CST format.But中的日期格式得到错误:

无法将"2018-01-01-12:12:12:123456“转换为”管道“DatePipe的日期

我认为这是因为timeStamp不是在日期,format..but只从后端获得这个日期。请建议一下。

EN

回答 2

Stack Overflow用户

发布于 2019-03-11 09:17:46

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

因此,这里有一个解决您的问题的解决方案,我已经编写了一个myDateParser()方法来将无效日期转换为有效日期。

your.component.ts

代码语言:javascript
复制
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

代码语言:javascript
复制
  <table>
    <tr>
     <td>{{modifiedTimestamp |  date: 'yyyy-MM-dd'}}</td>
    </tr>
   </table>

关于stackblitz的解

希望这能帮上忙!

票数 2
EN

Stack Overflow用户

发布于 2019-03-11 09:31:34

您的日期"2018-01-01-12:12:12:123456“不是有效的ISO 8601日期,因此不能被内置解析器解析。要么使用有效的日期格式,要么编写自定义解析器。

您可以使用regex,也可以简单地使用字符串函数,如另一个答案所示的子字符串。

Javascript中的日期将位于浏览器的本地时区,即用户的系统时间,在不同的时区中没有本地创建日期的方法。您可以在UTC中创建日期,并使用toLocaleString()将其转换为特定的时区。取决于从后端发送的日期是UTC还是CT。如果是CT,那么这将只适用于CT时区的用户。

代码语言:javascript
复制
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())

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55098459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档