¿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?


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


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.


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"

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

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.


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

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"

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


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

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


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


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)


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

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

-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/


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.