如何在打字稿中格式化日期?

时间:2018-07-18 07:21:56

标签: angular typescript date

当我在Angular2(打字稿)中执行新的Date()时,我会得到-> DATEE Wed Jul 18 2018 09:13:40 GMT + 0200

问题是我已将Date发送给Java,但Java不允许这种格式。

Java只允许,dd / mm / aaaa或aaaaa / mm / dd,但他不允许Wed Jul 18 2018 09:13:40 GMT + 0200。

我尝试在Angular中创建新格式,但始终获取String,但是我需要格式化Date,因为我在Java中的类获取Date。

let myDate: Date, myDay, myMonth, myYear;

myDate = new Date();
myDay  = myDate.setUTCFullYear;
console.log(myDay);
myDay  = myDate.toISOString;
console.log(myDay);
console.log(typeof(myDay));
console.log(new Date(myDay));

我无法安装默认情况下angular不带的库,例如:“ moment”。 Ty

5 个答案:

答案 0 :(得分:3)

您可以使用Angular的DatePipe。在您要格式化的组件中:

添加

providers: [DatePipe]

然后注入构造函数

constructor(public datepipe: DatePipe){}

然后在代码中可以像这样

this.datepipe.transform(this.dueDate, 'yyyy/MM/dd')

将格式从“ yyyy / MM / dd”更改为您需要的任何格式

答案 1 :(得分:1)

类型“ HomeComponent”上不存在属性“ datepipe”。您是说'datePipe'吗?ts(2551)

我遇到了问题,datePipe没有声明

答案 2 :(得分:0)

您可以使用

new Date().toLocaleString() => "11/10/2016, 11:49:36 AM"

然后使用string.slice获取所需字符串部分

答案 3 :(得分:0)

我想更详细地回答这个问题,而不是回答最初的问题,即如何在Typescript中格式化日期。

出现的问题是您无法读取打字稿提供的日期。答案是,不能用打字稿格式化日期,因为当格式化的日期转换为字符串时,这仍然会产生字符串。相反,您需要使用函数在Java中解析字符串日期本身,然后您将拥有一个日期变量。

当您将日期发送为Java或任何其他语言的响应时,

日期将始终转换为字符串。对于任何不是字符串,整数或布尔值的自定义变量,都是这种情况(假设您的响应是JSON格式)。

您的问题的解决方案是只发送日期,然后使用SimpleDateFormat(format).parse(date)格式化日期(其中format是所需的格式),并为日期的字符串表示日期。

答案 4 :(得分:-4)

编辑:

如果您不想使用任何库,则可以使用内置angular的 DatePipe

遵循使用datePipe的步骤:

1:导入DatePipe:

import { DatePipe } from '@angular/common';

2:在模块的提供程序中添加** DatePipe :**

NgModule({
      providers: [DatePipe]
    })
    export class AppModule {
    }

或者您可以将datePipe添加到组件的提供程序中:

@Component({
      selector: 'target-selector',
      styleUrls: ['./target.component.css'],
      templateUrl: './target.component.html',
      providers: [DatePipe]
    })
    export class TargetComponent {
    ...

3:现在将其注入构造函数:

constructor(private datePipe: DatePipe) {
}

4:随时可以使用:

this.datepipe.transform(this.myDate, 'yyyy/MM/dd');

 this.datepipe.transform(this.myDate, 'MM/dd/yyyy');