【问题标题】:How to convert date into this 'yyyy-MM-dd' format in angular 2如何将日期转换为角度 2 中的“yyyy-MM-dd”格式
【发布时间】:2016-11-02 10:03:06
【问题描述】:

我想将当前数据转换为 .ts 文件中的'yyyy-MM-dd' 格式。我的模板可以通过使用数据管道轻松完成。如何在打字稿中做到这一点。

在模板中:

{{date  | date:'yyyy-MM-dd'}}

如何在打字稿中转换成'yyyy-MM-dd'这种格式

现在我只是通过使用它来获取当前日期。

this.date =  new Date();

但需要将其转换为给定的格式。 请指导如何做到这一点...谢谢!

【问题讨论】:

标签: angular ionic2


【解决方案1】:

可以使用 Datepipe 将 typescript 中的日期转换为 'yyyy-MM-dd' 这种格式

import { DatePipe } from '@angular/common'
...
constructor(public datepipe: DatePipe){}
...
myFunction(){
 this.date=new Date();
 let latest_date =this.datepipe.transform(this.date, 'yyyy-MM-dd');
}

只需在 app.module.ts 的 'providers' 数组中添加 Datepipe。像这样:

import { DatePipe } from '@angular/common'
...
providers: [DatePipe]

【讨论】:

  • 从后端的角度来看,这是一个很好的答案,尤其是在使用 API 并且调用返回格式错误的日期时。
  • 你错过了从哪里导入这个:import { DatePipe } from '@angular/common';
  • 现在有一个内置的formatDate()函数,只需从@angular/common导入angular.io/api/common/formatDate
【解决方案2】:

我在项目中遇到了同样的问题。感谢@Umar Rashed,但我将详细解释它。

首先,从 app.module 中提供 日期管道

providers: [DatePipe]

导入到您的组件和 app.module:

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

其次,在构造函数下声明:

constructor(
    public datepipe: DatePipe
  ) {

日期来自服务器并像这样解析到控制台:

2000-09-19T00:00:00

我使用此代码将日期转换为我需要的日期; 在 TypeScript 中:

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

HTML 模板显示:

{{ user.birthDate }}

看起来像这样:

19/09/2000

在这样的网站上也看到过: dates shown as it is filtered (click to see the screenshot)

【讨论】:

  • Briliant ,这是开发人员需要的,而不是附加一天、一个月或一年来创建自己的格式。干杯!伙计...谢谢。
【解决方案3】:

一个简单的解决方案就是写

this.date = new Date().toLocaleDateString();

日期.toLocaleDateString() 时间.toLocaleTimeString() 都是.toLocaleString()

希望这会有所帮助。

【讨论】:

  • 朋友,我可以获得完美的数据,例如:30/08/2018(来自巴西的日期),但如果我只想获得日、月或年,该怎么做?
  • 你要找的东西已经在下面SO question得到了回答
【解决方案4】:

你也可以使用 formatDate

let formattedDt = formatDate(new Date(), 'yyyy-MM-dd hh:mm:ssZZZZZ', 'en_US')

【讨论】:

  • 在静态方法中效果很好。谢谢。
【解决方案5】:

你也可以试试这个。

考虑今天的日期'2018 年 12 月 28 日'(例如)

 this.date = new Date().toISOString().slice(0,10); 

我们得到的新日期()为:2018 年 12 月 28 日星期五 11:44:33 GMT+0530(印度 标准时间)

toISOString 将转换为:2018-12-28T06:15:27.479Z

slice(0,10) 我们只得到前 10 个字符作为日期,其中包含 yyyy-mm-dd : 2018-12-28.

【讨论】:

  • 请注意,ISO 字符串将采用 GMT 时区,因此您的一天可能会根据您所在的时区而不同。
  • 这个答案是错误的。你完全错过了时区。你试过2018-12-31T23:55:00.000Z吗?
【解决方案6】:

const formatDate=(dateObj)=>{
const days = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];
const months = ["January","February","March","April","May","June","July","August","September","October","November","December"];

const dateOrdinal=(dom)=> {
    if (dom == 31 || dom == 21 || dom == 1) return dom + "st";
    else if (dom == 22 || dom == 2) return dom + "nd";
    else if (dom == 23 || dom == 3) return dom + "rd";
    else return dom + "th";
};
return dateOrdinal(dateObj.getDate())+', '+days[dateObj.getDay()]+' '+ months[dateObj.getMonth()]+', '+dateObj.getFullYear();
}
const ddate = new Date();
const result=formatDate(ddate)
document.getElementById("demo").innerHTML = result
<!DOCTYPE html>
<html>
<body>
<h2>Example:20th, Wednesday September, 2020 <h2>
<p id="demo"></p>
</body>
</html>

【讨论】:

    【解决方案7】:

    如果您在使用 Angular 时遇到问题,我建议您查看 Moment.js。至少这是一个快速的解决方法,无需花费太多时间。

    【讨论】:

    • 在使用 moment 时出现此错误无法调用命名空间('moment')
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    相关资源
    最近更新 更多