我想在 .ts文件中将当前日期转换为 'yyyy-MM-dd'格式。在模板中,可以很容易地使用日期管道完成。如何在打字稿中做到这一点?
.ts
'yyyy-MM-dd'
模板:
{{date | date:'yyyy-MM-dd'}}
如何转换在这种格式 'yyyy-MM-dd'打字?
我只是用这个得到当前的日期。
this.date = new Date();
但我需要把它转换成给定的格式。
I would suggest you to have a look into Moment.js if you have trouble with Angular. At least it is a quick workaround without spending too much time.
The date can be converted in typescript to this format 'yyyy-MM-dd' by using Datepipe
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'); }
and just add Datepipe in 'providers' array of app.module.ts. Like this:
import { DatePipe } from '@angular/common' ... providers: [DatePipe]
A simple solution would be to just write
this.date = new Date().toLocaleDateString();
date .toLocaleDateString() time .toLocaleTimeString() both .toLocaleString()
.toLocaleDateString()
.toLocaleTimeString()
.toLocaleString()
Hope this helps.
You can also try this.
consider today's date '28 Dec 2018'(for example)
this.date = new Date().toISOString().slice(0,10);
new Date() we get as: Fri Dec 28 2018 11:44:33 GMT+0530 (India Standard Time) toISOString will convert to : 2018-12-28T06:15:27.479Z slice(0,10) we get only first 10 characters as date which contains yyyy-mm-dd : 2018-12-28.
new Date() we get as: Fri Dec 28 2018 11:44:33 GMT+0530 (India Standard Time)
toISOString will convert to : 2018-12-28T06:15:27.479Z
slice(0,10) we get only first 10 characters as date which contains yyyy-mm-dd : 2018-12-28.
The same problem I faced in my project. Thanks to @Umar Rashed, but I am going to explain it in detail.
First, Provide Date Pipe from app.module:
providers: [DatePipe]
Import to your component and app.module:
import { DatePipe } from '@angular/common';
Second, declare it under the constructor:
constructor( public datepipe: DatePipe ) {
Dates come from the server and parsed to console like this:
2000-09-19T00:00:00
I convert the date to how I need with this code; in TypeScript:
this.datepipe.transform(this.birthDate, 'dd/MM/yyyy')
Show from HTML template:
\{\{ user.birthDate }}
and it is seen like this:
19/09/2000
also seen on the web site like this: dates shown as it is filtered (click to see the screenshot)
You can also use formatDate
let formattedDt = formatDate(new Date(), 'yyyy-MM-dd hh:mm:ssZZZZZ', 'en_US')
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>
Just use:
today:string = new Date().toJSON().slice(0,10).replace(/-/g,'/');