¿Cómo obtener año / mes / día de un objeto de fecha?

240

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

¿Cómo obtener la fecha en formato 2009/12/30?

usuario198729
fuente
2
¿Querías la fecha y hora UTC?
DOK

Respuestas:

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;

o puede establecer una nueva fecha y dar los valores anteriores

Hiyasat
fuente
69
Solo recuerde: enero = 0, febrero = 1, y así sucesivamente.
Rubens Farias
99
¿Cuál es la diferencia entre getMonthy getUTCMonth?
user198729
10
UTC devolverá la hora universal. si quieres hora local usa getMonth
Hiyasat
54
getUTCDay()debe reemplazarse por getUTCDate(), ya que día es el número del día de la semana (0-6) y fecha es el número del día del mes (1-31).
Grzegorz Oledzki el
44
Esta respuesta sigue siendo defectuosa, creo. getUTCDate () devolverá el día del mes, pero en Inglaterra. Por ejemplo, si escribo: var d = nueva Fecha ("21 de julio de 1983 01:15:00"); d.getDate () devuelve 21 pero d.getUTCDate () devuelve solo 20 Esto se debe a que a las 01:15 de la mañana en Francia (donde estoy), todavía son las 23:15 en Inglaterra. Para obtener el día que estaba en la Fecha original, debe usar getDate ().
Pascal Ganaye
101
var dt = new Date();

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

Como el índice del mes está basado en 0, debe incrementarlo en 1.

Editar

Para obtener una lista completa de funciones de objeto de fecha, consulte

Fecha

getMonth()

Devuelve el mes (0-11) en la fecha especificada según la hora local.

getUTCMonth()

Devuelve el mes (0-11) en la fecha especificada según la hora universal.

rahul
fuente
55
Necesita parens. De lo contrario octubre se mostrará como 91 meses (desde el 9 + 1 = 91 en stringland)
Rob
55
Debe ser 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"
davidcondrey
fuente
2
Creo que esto podría ser mejor para el tercer caso new Date (). ToISOString (). Split ('T') [0] .replace (/ - / g, '/');
Mohamed Hesham
28

Te sugiero que uses Moment.js http://momentjs.com/

Entonces puedes hacer:

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

Nota: en realidad no es necesario agregar new Date()si desea la fecha y hora actual, solo la agregué como referencia para que pueda pasarle un objeto de fecha. para la fecha actual, esto también funciona:

moment().format("YYYY/MM/DD");
fmsf
fuente
1
Esta respuesta es buena si desea agregar una dependencia, y si es así a partir de 2019 day.js es una alternativa más ligera a moment.js como una opción a considerar: github.com/iamkun/dayjs . También se menciona que hay Luxon y date-fns.
BradGreens
18

informacion

Si se desea un mes y una fecha de 2 dígitos (2016/01/01 vs 2016/1/1)

código

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

salida

06/10/2016

violín

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

crédito

Más información y crédito a esta respuesta

más

Para obtener más información sobre .sliceel editor Pruébelo usted mismo en w3schools, me ayudó a comprender mejor cómo usarlo.

Hastig Zusammenstellen
fuente
Pero si la fecha se establece en diciembre, ¿no se reenvía a enero del próximo año?
Hanz Cheah el
13

Use los métodos de obtención de fecha.

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();
Aseem Gautam
fuente
44
Meses en JavaScript Los objetos de fecha están indexados a cero. Asegúrese de agregar 1, de lo contrario, diciembre será noviembre; Noviembre será octubre y así sucesivamente
cllpse
1
@Aseem debería ser el mes que necesita el +1
Hastig Zusammenstellen
12
var date = new Date().toLocaleDateString()
"12/30/2009"
aldokkani
fuente
2
Para comparar 2 fechas, esta respuesta es la mejor. ¡Gracias!
Dazag
9

FORMATO EUROPA (INGLÉS / ESPAÑOL)
I también necesita obtener el día actual, puede usar este.

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


* Para el formato español, solo traduzca la variable WEEK.

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


Salida: lunes - 16/11/2015 14:24

Philip Enc
fuente
6

Con la respuesta aceptada, el 1 de enero se mostraría así: 2017/1/1 .

Si lo prefiere 2017/01/01, puede usar:

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

¿Por qué no simplemente?

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

Chequea aquí:

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

João Pimentel Ferreira
fuente
2

Aquí hay una forma más limpia de obtener Año / Mes / Día con literales de plantilla:

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

ExillustX
fuente
2
let dateObj = new Date();

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

Para referencia, puede ver los detalles a continuación

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)

// Devuelve los minutos (0-59) nueva Fecha (). GetMonth () // Devuelve el mes (0-11) nueva Fecha (). GetSeconds () // Devuelve los segundos (0-59) nueva Fecha () .getTime () // Devuelve el tiempo (milisegundos desde el 1 de enero de 1970)

Srikrushna
fuente
1

Simplemente puede usar este código de una línea para obtener la fecha en formato año-mes-fecha

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

Estoy usando esto, que funciona si le pasa una fecha obj o js timestamp:

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);
    }
}
alex toader
fuente
-1

ES2018 introdujo grupos de captura de expresiones regulares que puede usar para capturar día, mes y año:

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

La ventaja de este enfoque es la posibilidad de capturar día, mes y año para formatos de fecha de cadena no estándar.

Árbitro. https://www.freecodecamp.org/news/es9-javascripts-state-of-art-in-2018-9a350643f29c/

Przemek Struciński
fuente
La pregunta se refería específicamente a formatear una fecha en "mes / día / año" a partir de un objeto Fecha. Los grupos de captura en expresiones regulares no son aplicables aquí.
Colin