Obtener fecha y hora actual en JavaScript


449

Tengo un script que imprime la fecha y hora actuales en JavaScript, pero DATEsiempre está mal. Aquí está el código:

var currentdate = new Date();
var datetime = "Last Sync: " + currentdate.getDay() + "/" + currentdate.getMonth() 
+ "/" + currentdate.getFullYear() + " @ " 
+ currentdate.getHours() + ":" 
+ currentdate.getMinutes() + ":" + currentdate.getSeconds();

Debe imprimir 18/04/2012 15:07:33e imprimir3/3/2012 15:07:33

¿Alguna ayuda? Gracias


10
En general, debe esforzarse por leer la documentación de las API que está utilizando. Aquí hay alguna documentación para los objetos de Fecha de Javascript: developer.mozilla.org/en/JavaScript/Reference/Global_Objects/… . Allí encontrará todo lo que necesita saber para solucionar su problema.
Steven Oxley


@Ricardo: MDN es una excelente referencia para este y muchos otros asuntos. Por favor úsalo.
Jon

55
La gente siempre se queja de ciertas preguntas, pero hay muy pocas preguntas sobre SO que no puedan responderse leyendo la documentación. Me encanta este sitio porque tiene respuestas concisas y ejemplos de cómo hacer lo que intento hacer, exactamente como lo hace esta pregunta.
Chris Sharp

3
cuando la gente busca en Google aquí, en lugar del API, ¿es tan malo compartir el conocimiento sin hacer que la gente se alimente mal?
Mauricio Gracia Gutiérrez

Respuestas:


577

.getMonth()devuelve un número basado en cero, por lo que para obtener el mes correcto, debe agregar 1, por lo que llamar .getMonth()puede devolver 4y no 5.

Entonces, en su código, podemos usar currentdate.getMonth()+1para generar el valor correcto. Adicionalmente:

  • .getDate()devuelve el día del mes <- este es el que desea
  • .getDay()es un método separado del Dateobjeto que devolverá un número entero que representa el día actual de la semana (0-6), 0 == Sundayetc.

entonces su código debería verse así:

var currentdate = new Date(); 
var datetime = "Last Sync: " + currentdate.getDate() + "/"
                + (currentdate.getMonth()+1)  + "/" 
                + currentdate.getFullYear() + " @ "  
                + currentdate.getHours() + ":"  
                + currentdate.getMinutes() + ":" 
                + currentdate.getSeconds();

Las instancias de fecha de JavaScript heredan de Date.prototype. Puede modificar el objeto prototipo del constructor para afectar las propiedades y los métodos heredados por las instancias de JavaScript Date

Puede utilizar el Dateobjeto prototipo para crear un nuevo método que devolverá la fecha y hora de hoy. Estos nuevos métodos o propiedades serán heredados por todas las instancias del Dateobjeto, lo que lo hace especialmente útil si necesita reutilizar esta funcionalidad.

// For todays date;
Date.prototype.today = function () { 
    return ((this.getDate() < 10)?"0":"") + this.getDate() +"/"+(((this.getMonth()+1) < 10)?"0":"") + (this.getMonth()+1) +"/"+ this.getFullYear();
}

// For the time now
Date.prototype.timeNow = function () {
     return ((this.getHours() < 10)?"0":"") + this.getHours() +":"+ ((this.getMinutes() < 10)?"0":"") + this.getMinutes() +":"+ ((this.getSeconds() < 10)?"0":"") + this.getSeconds();
}

Luego, simplemente puede recuperar la fecha y la hora haciendo lo siguiente:

var newDate = new Date();
var datetime = "LastSync: " + newDate.today() + " @ " + newDate.timeNow();

O llame al método en línea para que simplemente sea:

var datetime = "LastSync: " + new Date().today() + " @ " + new Date().timeNow();

11
Pequeño cambio para días de 12 horas y AM / PM Date.prototype.timeNow = function(){ return ((this.getHours() < 10)?"0":"") + ((this.getHours()>12)?(this.getHours()-12):this.getHours()) +":"+ ((this.getMinutes() < 10)?"0":"") + this.getMinutes() +":"+ ((this.getSeconds() < 10)?"0":"") + this.getSeconds() + ((this.getHours()>12)?('PM'):'AM'); };
Robert Speer

2
@RobertSpeer buena sugerencia. He escrito un método más utilizable del objeto de fecha desde la última actualización de esta publicación, que llamo, now()que toma un parámetro booleano para determinar si devuelve solo la fecha o la fecha y la hora, y también un segundo parámetro que especifica el formato al que corresponde la fecha debe devolverse en es decir dd / mm / aaaa etc.
Mark Walters

1
Observe que tiempos como 00:04:02 se mostrarán como 0: 4: 2 en la primera sugerencia, que no es lo que se solicitó. Para solucionar esto, uno podría agregar los operadores ternarios de la segunda sugerencia: (date.getHours() < 10 ? "0" : "") + date.getHours() + ":" + (date.getMinutes() < 10 ? "0" : "") + date.getMinutes() + ":" + (date.getSeconds() < 10 ? "0" : "") + date.getSeconds();
Matt

1
Tal vez un poco minucioso; pero ¿no debería almacenarse la marca de tiempo en un objeto temporal para evitar que la fecha / hora actual cambie durante los métodos de recuperación / impresión?
Vimos el

1
Actualización: ('0' + this.getDate()).slice(-2)parece más corto que(this.getDate() < 10)?"0":"") + this.getDate()
Tân

279

Para obtener la hora y la fecha, debe usar

    new Date().toLocaleString();

>> "09/08/2014, 2:35:56 AM"

Para obtener solo la fecha que debe usar

    new Date().toLocaleDateString();

>> "09/08/2014"

Para obtener solo el tiempo que debes usar

    new Date().toLocaleTimeString();

>> "2:35:56 AM"

O si solo desea la hora en el formato hh:mmsin AM / PM para inglés de EE. UU.

    new Date().toLocaleTimeString('en-US', { hour12: false, 
                                             hour: "numeric", 
                                             minute: "numeric"});
>> "02:35"

o para inglés británico

    new Date().toLocaleTimeString('en-GB', { hour: "numeric", 
                                             minute: "numeric"});

>> "02:35"

Lee más aquí .


3
esto funciona en la mayoría de los navegadores, pero puede verificar la compatibilidad aquí
Quethzel Díaz

1
lástima que no puedas obtener micro / milisegundos fácilmente con esto
palabras de todos modos

1
Mas uno. Estaba buscando una manera de mantener ambos dígitos. Estaba usando getHours()y getMinutes()antes, pero luego no obtienes el formato, 01, solo 1.
John

68

Para este verdadero estilo mysql use esta función a continuación: 2019/02/28 15:33:12

  • Si hace clic en el botón "Ejecutar fragmento de código" a continuación
  • Le mostrará un ejemplo simple de reloj digital en tiempo real
  • La demostración aparecerá debajo del fragmento de código.

function getDateTime() {
        var now     = new Date(); 
        var year    = now.getFullYear();
        var month   = now.getMonth()+1; 
        var day     = now.getDate();
        var hour    = now.getHours();
        var minute  = now.getMinutes();
        var second  = now.getSeconds(); 
        if(month.toString().length == 1) {
             month = '0'+month;
        }
        if(day.toString().length == 1) {
             day = '0'+day;
        }   
        if(hour.toString().length == 1) {
             hour = '0'+hour;
        }
        if(minute.toString().length == 1) {
             minute = '0'+minute;
        }
        if(second.toString().length == 1) {
             second = '0'+second;
        }   
        var dateTime = year+'/'+month+'/'+day+' '+hour+':'+minute+':'+second;   
         return dateTime;
    }

    // example usage: realtime clock
    setInterval(function(){
        currentTime = getDateTime();
        document.getElementById("digital-clock").innerHTML = currentTime;
    }, 1000);
<div id="digital-clock"></div>



11
var currentdate = new Date();

    var datetime = "Last Sync: " + currentdate.getDate() + "/"+(currentdate.getMonth()+1) 
    + "/" + currentdate.getFullYear() + " @ " 
    + currentdate.getHours() + ":" 
    + currentdate.getMinutes() + ":" + currentdate.getSeconds();

Cambie el .getDay()método a .GetDate()y agregue uno a mes, porque cuenta los meses desde 0.


5

Esto debería funcionar:

function dateToString(date) {
    var month = date.getMonth() + 1;
    var day = date.getDate();
    var dateOfString = (("" + day).length < 2 ? "0" : "") + day + "/";
    dateOfString += (("" + month).length < 2 ? "0" : "") + month + "/";
    dateOfString += date.getFullYear();
    return dateOfString;
}

var currentdate = new Date();
var datetime = "Last Sync: ";
datetime += dateToString(currentdate );
datetime += + currentdate.getHours() + ":"
            + currentdate.getMinutes() + ":"
            + currentdate.getSeconds();


4

Debe usar getDate () para obtener la parte de fecha. La función getDay () devuelve el número de día (domingo = 0, lunes = 1 ...), y getMonth () devuelve un índice basado en 0, por lo que debe incrementarlo en 1.

 var currentdate = new Date(); 

 var datetime = "Last Sync: " + currentdate.getDate() + "/"+  (parseInt(currentdate.getMonth())    + 1)
   + "/" + currentdate.getFullYear() + " @ "  
   + currentdate.getHours() + ":"  
   + currentdate.getMinutes() + ":" + currentdate.getSeconds(); 

4

He encontrado la forma más sencilla de obtener la fecha y hora actual en JavaScript desde aquí: cómo obtener la fecha y hora actuales usando JavaScript

var today = new Date();
var date = today.getFullYear()+'-'+(today.getMonth()+1)+'-'+today.getDate();
var time = today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds();
var CurrentDateTime = date+' '+time;

3

obtener la fecha y hora actual

var now = new Date(); 
  var datetime = now.getFullYear()+'/'+(now.getMonth()+1)+'/'+now.getDate(); 
  datetime += ' '+now.getHours()+':'+now.getMinutes()+':'+now.getSeconds(); 

Reporta tiempos como 00:03:04 como 0: 3: 4.
Keir Finlow-Bates

2

.getDay regresa el día de la semana. Necesitas .getDate en su lugar. .getMonth devuelve valores de 0 a 11. Deberá agregar 1 al resultado para obtener el número de mes "humano".


2

Esta pregunta es bastante antigua y las respuestas también lo son. En lugar de esas monstruosas funciones, ahora podemos usar moment.js para obtener la fecha actual, lo que en realidad lo hace muy fácil. Todo lo que debe hacerse es incluir moment.js en nuestro proyecto y obtener una fecha bien formateada, por ejemplo, mediante:

moment().format("dddd, MMMM Do YYYY, h:mm:ss a");

Creo que eso hace que sea mucho más fácil manejar fechas en javascript.


2
¿Qué funciones monstruosas? ¿Reemplazar oneliners o 5 liners con varios K de código blackbox?
mplungjan

2
function UniqueDateTime(format='',language='en-US'){
    //returns a meaningful unique number based on current time, and milliseconds, making it virtually unique
    //e.g : 20170428-115833-547
    //allows personal formatting like more usual :YYYYMMDDHHmmSS, or YYYYMMDD_HH:mm:SS
    var dt = new Date();
    var modele="YYYYMMDD-HHmmSS-mss";
    if (format!==''){
      modele=format;
    }
    modele=modele.replace("YYYY",dt.getFullYear());
    modele=modele.replace("MM",(dt.getMonth()+1).toLocaleString(language, {minimumIntegerDigits: 2, useGrouping:false}));
    modele=modele.replace("DD",dt.getDate().toLocaleString(language, {minimumIntegerDigits: 2, useGrouping:false}));
    modele=modele.replace("HH",dt.getHours().toLocaleString(language, {minimumIntegerDigits: 2, useGrouping:false}));
    modele=modele.replace("mm",dt.getMinutes().toLocaleString(language, {minimumIntegerDigits: 2, useGrouping:false}));
    modele=modele.replace("SS",dt.getSeconds().toLocaleString(language, {minimumIntegerDigits: 2, useGrouping:false}));
    modele=modele.replace("mss",dt.getMilliseconds().toLocaleString(language, {minimumIntegerDigits: 3, useGrouping:false}));
    return modele;
}

1
function getTimeStamp() {
       var now = new Date();
       return ((now.getMonth() + 1) + '/' + (now.getDate()) + '/' + now.getFullYear() + " " + now.getHours() + ':'
                     + ((now.getMinutes() < 10) ? ("0" + now.getMinutes()) : (now.getMinutes())) + ':' + ((now.getSeconds() < 10) ? ("0" + now
                     .getSeconds()) : (now.getSeconds())));
}

1

Este pequeño código es fácil y funciona en todas partes.

<p id="dnt"></p>
<script>
document.getElementById("dnt").innerHTML = Date();
</script>

hay espacio para diseñar


1

Creo que llego muy tarde para compartir mi respuesta, pero creo que valdrá la pena.

function __getCurrentDateTime(format){
    var dt=new Date(),x,date=[];
    date['d']=dt.getDate();
    date['dd']=dt.getDate()>10?dt.getDate():'0'+dt.getDate();
    date['m']=dt.getMonth()+1;
    date['mm']=(dt.getMonth()+1)>10?(dt.getMonth()+1):'0'+(dt.getMonth()+1);
    date['yyyy']=dt.getFullYear();
    date['yy']=dt.getFullYear().toString().slice(-2);
    date['h']=(dt.getHours()>12?dt.getHours()-12:dt.getHours());
    date['hh']=dt.getHours();
    date['mi']=dt.getMinutes();
    date['mimi']=dt.getMinutes()<10?('0'+dt.getMinutes()):dt.getMinutes();
    date['s']=dt.getSeconds();
    date['ss']=dt.getSeconds()<10?('0'+dt.getSeconds()):dt.getSeconds();
    date['sss']=dt.getMilliseconds();
    date['ampm']=(dt.getHours()>=12?'PM':'AM');
    x=format.toLowerCase();
    x=x.indexOf('dd')!=-1?x.replace(/(dd)/i,date['dd']):x.replace(/(d)/i,date['d']);
    x=x.indexOf('mm')!=-1?x.replace(/(mm)/i,date['mm']):x.replace(/(m)/i,date['m']);
    x=x.indexOf('yyyy')!=-1?x.replace(/(yyyy)/i,date['yyyy']):x.replace(/(yy)/i,date['yy']);
    x=x.indexOf('hh')!=-1?x.replace(/(hh)/i,date['hh']):x.replace(/(h)/i,date['h']);
    x=x.indexOf('mimi')!=-1?x.replace(/(mimi)/i,date['mimi']):x.replace(/(mi)/i,date['mi']);
    if(x.indexOf('sss')!=-1){   x=x.replace(/(sss)/i,date['sss']);  }
    x=x.indexOf('ss')!=-1?x.replace(/(ss)/i,date['ss']):x.replace(/(s)/i,date['s']);
    if(x.indexOf('ampm')!=-1){  x=x.replace(/(ampm)/i,date['ampm']);    }
    return x;
}

console.log(__getCurrentDateTime());  //returns in dd-mm-yyyy HH:MM:SS
console.log(__getCurrentDateTime('dd-mm-yyyy'));    //return in 05-12-2016
console.log(__getCurrentDateTime('dd/mm*yyyy'));    //return in 05/12*2016
console.log(__getCurrentDateTime('hh:mimi:ss'));    //return in 13:05:30

console.log (__ getCurrentDateTime ('h: mi: ss ampm')); // regreso en 1: 5: 30 PM


1

Necesitaba resolver esto para una lista de efectos posteriores. Esto es lo que se me ocurrió después de tomar elementos de algunas fuentes diferentes: el formato es MM / DD / AAAA HH: MM AM / PM

D = new Date(Date(00));
M = D.getMonth()+1;
H = D.getHours();
Mi = D.getMinutes();

N = "AM"
if (H >= 12)
N = "PM"
if (H > 12)
{
H = H-12
}

amtOfZeroes = 2;
isNeg = false;

if (M < 0)
{
M = Math.abs(M);
isNeg = true;
}
Mo = Math.round(M) + "";
while(Mo.length < amtOfZeroes)
{

Mo = "0" + Mo; 
}
if (isNeg)
Mo = "-" + Mo;

if (H < 0)
{
H = Math.abs(H);
isNeg = true;
}
Ho = Math.round(H) + "";
while(Ho.length < amtOfZeroes)
{
Ho = "0" + Ho; 
}
if (isNeg)
Ho = "-" + Ho;

if (Mi < 0)
{
Mi = Math.abs(Mi);
isNeg = true;
}
Min = Math.round(Mi) + "";
while(Min.length < amtOfZeroes)
{
Min = "0" + Min; 
}
if (isNeg)
Min = "-" + Min;

T = Ho + ":" + (Min)

Mo + "/" + D.getDate() + "/" + D.getFullYear() + "  " + T + " " + N

1

Basic JS (bueno para aprender): utilizamos la función Date () y hacemos todo lo que necesitamos para mostrar la fecha y el día en nuestro formato personalizado.

var myDate = new Date();

let daysList = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
let monthsList = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Aug', 'Oct', 'Nov', 'Dec'];


let date = myDate.getDate();
let month = monthsList[myDate.getMonth()];
let year = myDate.getFullYear();
let day = daysList[myDate.getDay()];

let today = `${date} ${month} ${year}, ${day}`;

let amOrPm;
let twelveHours = function (){
    if(myDate.getHours() > 12)
    {
        amOrPm = 'PM';
        let twentyFourHourTime = myDate.getHours();
        let conversion = twentyFourHourTime - 12;
        return `${conversion}`

    }else {
        amOrPm = 'AM';
        return `${myDate.getHours()}`}
};
let hours = twelveHours();
let minutes = myDate.getMinutes();

let currentTime = `${hours}:${minutes} ${amOrPm}`;

console.log(today + ' ' + currentTime);


Nodo JS (rápido y fácil): instale el paquete npm usando ( fecha y hora de instalación npm ), luego ejecute lo siguiente.

let nodeDate = require('date-and-time');
let now = nodeDate.format(new Date(), 'DD-MMMM-YYYY, hh:mm:ss a');
console.log(now);

0
dt= new Date();
alert(dt.toISOString().substring(8,10) + "/" + 
dt.toISOString().substring(5,7)+ "/" + 
dt.toISOString().substring(0,4) + " " + 
dt.toTimeString().substring(0,8))

Incluya una explicación de lo que hace su código y cómo responde la pregunta. Si obtiene un fragmento de código como respuesta, es posible que no sepa qué hacer con él. La respuesta debería dar al OP y a los futuros visitantes una guía sobre cómo depurar y solucionar su problema. Señalar cuál es la idea detrás de su código es de gran ayuda para comprender el problema y aplicar o modificar su solución.
Palec

Este código es muy primitivo para la explicación. Simplemente ejecútelo en la consola
GraninDm

Es primitivo para ti y ahora. ¿Qué tal en un año? ¿Qué pasa con alguien que no lee JavaScript con tanta fluidez como usted? Le sugiero que agregue algo en la línea de Usar nueva instancia de Date. Analice los componentes de fecha desde toISOString()y agregue tiempo desde toTimeString(). .
Palec

Este enfoque no es óptimo. Difícil de leer el código, implica un análisis innecesario. Por ejemplo, toISOString().substring(8,10)es lo mismo que getFullYear().
Palec

0
function display_c(){   
    var refresh = 1000; // Refresh rate in milli seconds    
    mytime = setTimeout('display_ct()', refresh)    
}

function display_ct() {

    var strcount    
    var currentdate = new Date();

    document.getElementById('ct').innerHTML = currentdate.toDateString() + " " + currentdate.getHours() + ":" + currentdate.getMinutes() + ":" + currentdate.getSeconds();

    tt = display_c();   
}


id = 'ct'     // Replace in Your id

onload = "display_ct();"     // Type inside a Body Tag

0

Mi respuesta bien intencionada es usar este pequeño bit de JS: https://github.com/rhroyston/clock-js

clock.now   --> 1462248501241
clock.time  --> 11:08 PM
clock.weekday   --> monday
clock.day   --> 2
clock.month --> may
clock.year  --> 2016
clock.since(1462245888784)  --> 44 minutes
clock.until(1462255888784)  --> 2 hours
clock.what.time(1462245888784)  --> 10:24 PM
clock.what.weekday(1461968554458)   --> friday
clock.what.day('14622458887 84')    --> 2
clock.what.month(1461968554458) --> april
clock.what.year('1461968554458')    --> 2016
clock.what.time()   --> 11:11 PM
clock.what.weekday('14619685abcd')  -->     clock.js error : expected unix timestamp as argument
clock.unit.seconds  --> 1000
clock.unit.minutes  --> 60000
clock.unit.hours    --> 3600000
clock.unit.days --> 86400000
clock.unit.weeks    --> 604800000
clock.unit.months   --> 2628002880
clock.unit.years    --> 31536000000

0
var datetime = new Date().toLocaleString().slice(0,9) +" "+new Date(new Date()).toString().split(' ')[4];
console.log(datetime);

0

Es simple y soberbio

 $(document).ready(function () { 
            var fpsOut = document.getElementById('myTime');
            setInterval(function () {
                var d = new Date(); 
                fpsOut.innerHTML = d;
            }, 1000);
        });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="myTime"></div>

por favor encuentre el violinista a continuación para el ejemplo

http://jsfiddle.net/4zVxp/483/


0

Si alguien busca la función

console.log(formatAMPM());
function formatAMPM() {
  var date = new Date();
  var hours = date.getHours();
  var minutes = date.getMinutes();
  var seconds = date.getSeconds();
  var ampm = hours >= 12 ? 'PM' : 'AM';
  hours = hours % 12;
  hours = hours ? hours : 12; // the hour '0' should be '12'
  minutes = minutes < 10 ? '0'+minutes : minutes;
  return strTime = date.getMonth() + '/' + date.getDay()+'/'+date.getFullYear()+' '+ hours + ':' + minutes +':'+ seconds + " " +ampm;
}

-1

Mira esto puede funcionar para ti

<script language="JavaScript">
var dayarray=new Array("Sunday","Monday",
 "Tuesday","Wednesday","Thursday","Friday","Saturday")

var montharray=new Array("January","February","March",
 "April","May","June","July","August","September",
 "October","November","December")

function getthedate(){
var mydate=new Date()
var year=mydate.getYear()
if (year < 1000)
year+=1900
var day=mydate.getDay()
var month=mydate.getMonth()
var daym=mydate.getDate()
if (daym<10)
daym="0"+daym
var hours=mydate.getHours()
var minutes=mydate.getMinutes()
var seconds=mydate.getSeconds()
var dn="AM"
if (hours>=12)
dn="PM"
if (hours>12){
hours=hours-12
}
if (hours==0)
hours=12
if (minutes<=9)
minutes="0"+minutes
if (seconds<=9)
seconds="0"+seconds
//change font size here
var cdate="<small><font color='000000' face='Arial'><b>"+dayarray[day]+", 
    "+montharray[month]+" "+daym+", "+year+" "+hours+":"
 +minutes+":"+seconds+" "+dn
    +"</b></font></small>"
if (document.all)
document.all.clock.innerHTML=cdate
else if (document.getElementById)
document.getElementById("clock").innerHTML=cdate
else
document.write(cdate)
}
 if (!document.all&&!document.getElementById)
  getthedate()
  function goforit(){
  if (document.all||document.getElementById)
 setInterval("getthedate()",1000)
}

 </script>

enter code here

 <span id="clock"></span>

-4

<p id="DateTimeBox">Click The Button To Show Date And Time</p>
<button onclick="ShowDate();"> Show Date </button>
<script>
  function ShowDate() {
    document.getElementById('DateTimeBox').innerHTML = Date();
  }
</script>


Debe incluir algunos comentarios y no tener solo una publicación de solo código.
codechurn el
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.