Comment obtenir l'année / mois / jour à partir d'un objet date?


240

alert(dateObj) donne Wed Dec 30 2009 00:00:00 GMT+0800

Comment obtenir la date au format 2009/12/30?


2
Vous vouliez la date et l'heure UTC?
DOK

Réponses:


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

newdate = year + "/" + month + "/" + day;

ou vous pouvez définir une nouvelle date et donner les valeurs ci-dessus


69
N'oubliez pas: janvier = 0, février = 1, etc.
Rubens Farias

9
Quelle est la différence entre getMonthet getUTCMonth?
user198729

10
L'UTC renverra l'heure universelle. si vous voulez l'heure locale, utilisez getMonth
Hiyasat

54
getUTCDay()doit être remplacé par getUTCDate(), puisque day est le numéro du jour de la semaine (0-6) et date est le numéro du jour du mois (1-31).
Grzegorz Oledzki

4
Cette réponse est encore imparfaite, je crois. getUTCDate () retournera le jour du mois en effet mais en Angleterre. Par exemple, si je tape: var d = new Date ("21 juillet 1983 01:15:00"); d.getDate () renvoie 21 mais d.getUTCDate () ne retourne que 20 C'est parce qu'à 01h15 du matin en France (où je suis), il est encore 23h15 en Angleterre. Pour obtenir le jour qui était dans la date d'origine, vous devez utiliser getDate ().
Pascal Ganaye

101
var dt = new Date();

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

Étant donné que l'indice du mois est basé sur 0, vous devez l'incrémenter de 1.

Éditer

Pour une liste complète des fonctions d'objet de date, voir

Date

getMonth()

Renvoie le mois (0-11) à la date spécifiée en fonction de l'heure locale.

getUTCMonth()

Renvoie le mois (0-11) à la date spécifiée en fonction de l'heure universelle.


5
A besoin de parens. Sinon octobre sera affiché comme mois 91 (depuis le 9 + 1 = 91 stringland)
voler

5
Doit être dt.getFullYear () + "/" + (dt.getMonth () + 1) + "/" + dt.getDate ();
Paulius Uza

90
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"

2
Je pense que cela pourrait être mieux pour le troisième cas nouveau Date (). ToISOString (). Split ('T') [0] .replace (/ - / g, '/');
Mohamed Hesham

28

Je vous suggère d'utiliser Moment.js http://momentjs.com/

Ensuite, vous pouvez faire:

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

Remarque: vous n'avez pas vraiment besoin d'ajouter new Date()si vous voulez le TimeDate actuel, je l'ai seulement ajouté comme référence que vous pouvez lui passer un objet date. pour la TimeDate actuelle, cela fonctionne également:

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

1
Cette réponse est bonne si vous souhaitez ajouter une dépendance - et si c'est le cas à partir de 2019 day.js est une alternative plus légère à moment.js comme option à considérer - github.com/iamkun/dayjs . Également mentionné il y a Luxon et date-fns.
BradGreens

18

Info

Si un mois et une date à 2 chiffres sont souhaités (2016/01/01 vs 2016/1/1)

code

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);

production

06/10/2016

violon

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

crédit

Plus d'informations et crédit à cette réponse

plus

Pour en savoir plus sur .slicel' éditeur d'essayer vous-même à w3schools, vous m'avez aidé à mieux comprendre comment l'utiliser.


Mais si la date est fixée à Decemeber, elle ne sera pas transmise à janvier de l'année prochaine?
Hanz Cheah


13

Utilisez les méthodes d'obtention de date.

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();

4
Mois sur les objets JavaScript Date sont indexés zéro. Assurez-vous d'y ajouter 1, sinon décembre deviendra novembre; Novembre devient octobre et ainsi de suite
cllpse

1
@Aseem Devrait être juste le mois qui a besoin du +1
Hastig Zusammenstellen

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

2
Pour comparer 2 dates, cette réponse est top. Merci!
Dazag

9

FORMAT EUROPE (ANGLAIS / ESPAGNOL)
Si vous avez également besoin de la date du jour, vous pouvez utiliser celle-ci.

function getFormattedDate(today) 
{
    var week = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
    var day  = week[today.getDay()];
    var dd   = today.getDate();
    var mm   = today.getMonth()+1; //January is 0!
    var yyyy = today.getFullYear();
    var hour = today.getHours();
    var minu = today.getMinutes();

    if(dd<10)  { dd='0'+dd } 
    if(mm<10)  { mm='0'+mm } 
    if(minu<10){ minu='0'+minu } 

    return day+' - '+dd+'/'+mm+'/'+yyyy+' '+hour+':'+minu;
}

var date = new Date();
var text = getFormattedDate(date);


* Pour le format espagnol, il suffit de traduire la variable WEEK.

var week = new Array('Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado');


Sortie: lundi - 16/11/2015 14:24


6

Avec la réponse acceptée, le 1er Janvier sera affiché comme ceci: 2017/1/1.

Si vous préférez 2017/01/01, vous pouvez utiliser:

var dt = new Date();
var date = dt.getFullYear() + '/' + (((dt.getMonth() + 1) < 10) ? '0' : '') + (dt.getMonth() + 1) + '/' + ((dt.getDate() < 10) ? '0' : '') + dt.getDate();

6

Pourquoi pas simplement?

dateObj.toISOString().slice(0, 10) // YYYY-MM-DD

Vérifiez ici:

const date1 = new Date('December 17, 1995 03:24:00');
console.log(date1.toISOString().slice(0, 10))


2

Voici une façon plus propre d'obtenir l'année / mois / jour avec des modèles de littéraux:

var date = new Date();
var formattedDate = `${date.getFullYear()}/${(date.getMonth() + 1)}/${date.getDate()}`;
console.log(formattedDate);


2
let dateObj = new Date();

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

Pour référence, vous pouvez voir les détails ci-dessous

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)

// Renvoie les minutes (0-59) new Date (). GetMonth () // Renvoie le mois (0-11) new Date (). GetSeconds () // Renvoie les secondes (0-59) new Date () .getTime () // Renvoie l'heure (millisecondes depuis le 1er janvier 1970)


1

Vous pouvez simplement utiliser ce code d'une ligne pour obtenir la date au format année-mois-date

var date = new Date().getFullYear() + "-" + new Date().getMonth() + 1 + "-" + new Date().getDate();

-1

J'utilise ceci qui fonctionne si vous lui passez un horodatage date obj ou js:

getHumanReadableDate: function(date) {
    if (date instanceof Date) {
         return date.getDate() + "/" + (date.getMonth() + 1) + "/" + date.getFullYear();
    } else if (isFinite(date)) {//timestamp
        var d = new Date();
        d.setTime(date);
        return this.getHumanReadableDate(d);
    }
}

-1

ES2018 a introduit des groupes de capture d'expression régulière que vous pouvez utiliser pour capturer le jour, le mois et l'année:

const REGEX = /(?<year>[0-9]{4})-(?<month>[0-9]{2})-(?<day>[0-9]{2});
const results = REGEX.exec('2018-07-12');
console.log(results.groups.year);
console.log(results.groups.month);
console.log(results.groups.day);

L'avantage de cette approche est la possibilité de saisir le jour, le mois et l'année pour les formats de date de chaîne non standard.

Réf. https://www.freecodecamp.org/news/es9-javascripts-state-of-art-in-2018-9a350643f29c/


La question portait spécifiquement sur le formatage d'une date en "mois / jour / année" à partir d'un objet Date. Les groupes de capture en regex ne sont pas applicables ici.
Colin
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.