javascript - Hur får man år/månad/dag från ett datumobjekt?


alert(dateObj) ger ons 30 dec 2009 00:00:00 GMT+0800

Hur får man datum i formatet 2009/12/30?

Svar #1

const dateObj = new Date();
const month   = dateObj.getUTCMonth() + 1; // months from 1-12
const day     = dateObj.getUTCDate();
const year    = dateObj.getUTCFullYear();

const newDate = year + "/" + month + "/" + day;

// Using template literals:
const newDate = `${year}/${month}/${day}`;

// Using padded values, so that 2023/1/7 becomes 2023/01/07
const pMonth        = month.toString().padStart(2,"0");
const pDay          = day.toString().padStart(2,"0");
const newPaddedDate = `${year}/${pMonth}/${pDay}`;

eller så kan du sätta ett nytt datum och ge ovanstående värden

Svar #2

new Date().toISOString()
"2016-02-18T23:59:48.039Z"
new Date().toISOString().split('T')[0];
"2016-02-18"
new Date().toISOString().replace('-', '/').split('T')[0].replace('-', '/');
"2016/02/18"

new Date().toLocaleString().split(',')[0]
"2/18/2016"

Svar #3

var dt = new Date();

dt.getFullYear() + "/" + (dt.getMonth() + 1) + "/" + dt.getDate();

Eftersom månadens index är baserat på 0 måste du öka det med 1.

Redigera

För en komplett lista över datumobjektets funktioner, se

Datum

getMonth()

Returnerar månaden (0-11) i det angivna datumet enligt lokal tid.

getUTCMonth()

Returnerar månaden (0-11) i det angivna datumet enligt universell tid.

Svar #4

Varför inte använda metoden toISOString() med slice eller helt enkelt toLocaleDateString()?

Var medveten om att tidszonen som returneras av toISOString alltid är noll UTC-förskjutning, medan den i toLocaleDateString är användaragentens tidszon.

Kolla här:

const d = new Date() // today, now

// Timezone zero UTC offset
console.log(d.toISOString().slice(0, 10)) // YYYY-MM-DD

// Timezone of User Agent
console.log(d.toLocaleDateString('en-CA')) // YYYY-MM-DD
console.log(d.toLocaleDateString('en-US')) // M/D/YYYY
console.log(d.toLocaleDateString('de-DE')) // D.M.YYYY
console.log(d.toLocaleDateString('pt-PT')) // DD/MM/YYYY

Svar #5

2021 SVAR

Du kan använda den inbyggda .toLocaleDateString()-funktionen som stöder flera användbara parametrar som locale (för att välja ett format som MM/DD/YYYY eller YYYY/MM/DD), timezone (för att konvertera datumet) och formats details options (t.ex. 1 vs 01 vs Januari).

Exempel

console.log( new Date().toLocaleDateString() ); // 8/19/2020
    
console.log( new Date().toLocaleDateString('en-US', {year: 'numeric', month: '2-digit', day: '2-digit'}) ); // 08/19/2020 (month and day with two digits)

console.log( new Date().toLocaleDateString('en-ZA') ); // 2020/08/19 (year/month/day) notice the different locale
    
console.log( new Date().toLocaleDateString('en-CA') ); // 2020-08-19 (year-month-day) notice the different locale

console.log( new Date().toLocaleString("en-US", {timeZone: "America/New_York"}) ); // 8/19/2020, 9:29:51 AM. (date and time in a specific timezone)

console.log( new Date().toLocaleString("en-US", {hour: '2-digit', hour12: false, timeZone: "America/New_York"}) );  // 09 (just the hour)

Observera att ibland måste du för att skriva ut ett datum i ditt specifika önskade format hitta en kompatibel lokal för det formatet. Du kan hitta exempel på lokaler här: https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_tolocalestring_date_all

Observera att locale bara ändrar formatet. Om du vill omvandla ett specifikt datum till motsvarande tid i ett specifikt land eller en stad behöver du använda parametern timezone.

Svar #6

Jag skulle föreslå att du använder Moment.js http://momentjs.com/

Då kan du göra:

moment(new Date()).format("YYYY/MM/DD");

Observera: du behöver egentligen inte lägga till new Date() om du vill ha det aktuella datum och tid, jag lade till det bara som en referens för att du kan skicka ett datumobjekt till det. För det aktuella datum och tid fungerar detta också:

moment().format("YYYY/MM/DD");

Svar #7

let dateObj = new Date();

let myDate = (dateObj.getUTCFullYear()) + "/" + (dateObj.getMonth() + 1)+ "/" + (dateObj.getUTCDate());

För referens kan du se nedanstående detaljer

new Date().getDate()          // Return the day as a number (1-31)
new Date().getDay()           // Return the weekday as a number (0-6)
new Date().getFullYear()      // Return the four digit year (yyyy)
new Date().getHours()         // Return the hour (0-23)
new Date().getMilliseconds()  // Return the milliseconds (0-999)
new Date().getMinutes()       // Return the minutes (0-59)
new Date().getMonth()         // Return the month (0-11)
new Date().getSeconds()       // Return the seconds (0-59)
new Date().getTime()          // Return the time (milliseconds since January 1, 1970)

let dateObj = new Date();

let myDate = (dateObj.getUTCFullYear()) + "/" + (dateObj.getMonth() + 1)+ "/" + (dateObj.getUTCDate());

console.log(myDate)

Svar #8

information

Om en 2-siffrig månad och datum önskas (2016/01/01 vs 2016/1/1)

kod

var dateObj = new Date();
var month = ('0' + (dateObj.getMonth() + 1)).slice(-2);
var date = ('0' + dateObj.getDate()).slice(-2);
var year = dateObj.getFullYear();
var shortDate = year + '/' + month + '/' + date;
alert(shortDate);

utdata

2016/10/06

fiol

https://jsfiddle.net/Hastig/1xuu7z7h/

kredit

Mer information från och erkännande till detta svar

mer

För att lära dig mer om .slice hjälpte 'prova själv'-redigeraren på w3schools mig att bättre förstå hur man använder det.

Svar #9

var date = new Date().toLocaleDateString()
"12/30/2009"

Svar #10

Använd Date-hämtmetoderna.

http://www.tizag.com/javascriptT/javascriptdate.php

http://www.htmlgoodies.com/beyond/javascript/article.php/3470841

var dateobj= new Date() ;
var month = dateobj.getMonth() + 1;
var day = dateobj.getDate() ;
var year = dateobj.getFullYear();

Svar #11

Trevlig formaterings-tillägg: http://blog.stevenlevithan.com/archives/date-time-format.

Med det kunde du skriva:

var now = new Date();
now.format("yyyy/mm/dd");

Relaterade artiklar