日期管道角度 2 未显示正确的资源



下面是我的代码。 使用 Angular 2 内置日期管道将时间戳转换为正确的日期格式。

import { Component } from '@angular/core';
@Component({
selector: 'my-app',
template:`<h1>My First Angular 2 App</h1>
<p>{{test | date: 'dd/MM/yyyy'}} - format: dd/MM/yyyy</p>`
})
export class AppComponent { 
test : Date = '2017-04-30T23:59:59';
}

输出:01/05/2017 - 格式: 日/月/年

但我期待 30/04/2017 作为我的输出

如果你只想显示日期,请使用这个

<div>{{test.split("T")[0] | date : 'dd/MM/yyyy'}}</div>

我认为您遇到了时区问题。

从 https://www.w3schools.com/js/js_dates.asp:

设置日期时,不指定时区,JavaScript 将 使用浏览器的时区。

获取日期时,未指定时区,结果为 转换为浏览器的时区。

当我测试只是在 jsFiddle 的构造函数中使用您的字符串创建一个日期并控制台将其注销时,我得到的时间比我定义的时间晚 5 小时,这将对应于 GMT。

尝试使用指定的时区设置日期:

test : Date = new Date('2017-04-30T23:59:59Z');

我的解决方案如下

//our root app component
import {Component, NgModule, VERSION} from '@angular/core'
import {BrowserModule} from '@angular/platform-browser'
@Component({
  selector: 'my-app',
  template: `
    <div>
      <h2>Hello {{name}}</h2><br>
      <h5>{{test | date: 'dd/MM/yyyy'}}</h5>
    </div>
  `,
})
export class App {
  name:string;
   test : Date = new Date('2017-04-30T23:59:59');
  constructor() {
    this.name = `Angular! v${VERSION.full}`;
   console.log(this.test)
  }
}

现场演示

更新:

 getExcatDate(string){
    let year=new Date(this.name).getYear();
    let month=new Date(this.name).getMonth();
    let date=new Date(this.name).getDate();
    let local= (date.toString().length===1 ?  '0' +date : date) + '/' +
                (month.toString().length===1 ?  '0' +month : month) 
              + '/' +  year.toString().substring(1);
    console.log(local)
    return local;
  }

使用上述方法获取确切的日期,因为 Pankaj 说日期管道不适用于您的案例。 演示已更新

相关内容

  • 没有找到相关文章

最新更新