2012-04-18 23 views
301

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

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:33 y grabados 3/3/2012 15:07:33

Cualquier ayuda? Gracias

+8

En general, usted debe esforzarse para leer la documentación de las API que está utilizando. Aquí hay documentación para los objetos Date de Javascript: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date. Todo lo que necesita saber para solucionar su problema se puede encontrar allí. –

+2

posible duplicado de [Cómo obtener la fecha actual en JavaScript] (http: // stackoverflow.com/questions/1531093/how-to-get-current-date-in-javascript) – Jon

+0

@Ricardo: MDN es una excelente [referencia] (https://developer.mozilla.org/es/JavaScript/Reference/Global_Objects/ Fecha) para este y muchos otros asuntos. Por favor úsala – Jon

Respuesta

436

Al llamar .getMonth() es necesario agregar 1 para visualizar el mes correcto. El recuento de Javascript siempre comienza en 0 (mira here para comprobar por qué), así que llamar al .getMonth() en mayo devolverá 4 y no 5.

Así que en su código podemos usar currentdate.getMonth()+1 para dar el valor correcto. Además:

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

lo que el código debería tener este aspecto:

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

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

se puede hacer uso del constructor de prototipos para el objeto Date y crear un nuevo método del objeto Date para devolver la fecha y la hora actual . Estos nuevos métodos o propiedades serán heredados por todas las instancias del objeto Date por lo que es especialmente útil si necesita volver a utilizar 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(); 
} 

continuación, puede simplemente recuperar la fecha y la hora de la siguiente manera:

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

O llamar al método en línea por lo que sería simplemente -

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

Small change for 12 horas al día & 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'); }; ' –

+2

@RobertSpeer sugerencia agradable. He escrito un método más útil 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 se devuelve solo la fecha o la fecha y la hora, y también un segundo parámetro que especifica el formato en el que se debe devolver la fecha, es decir dd/mm/aaaa etc. –

+1

Observe que los 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

11
var currentdate = new Date(); 

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

Cambio .getDay() método para .GetDate() y agregue a mes, ya que cuenta meses desde 0.

3

getDay() obtiene el día de la semana. 3 es el miércoles. Quiere getDate(), que devolverá 18.

También getMonth() comienza en 0, necesita agregar 1 para obtener 4 (abril).

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

4

Esto debería hacer el truco:

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

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

4

Necesita obtener getDate() para obtener la parte de la fecha. La función getDay() devuelve el número de días (Domingo = 0, de lunes = 1 ...), y la getMonth() devuelve un índice de 0 a base, por lo que necesita para 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(); 
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()))); 
} 
-2

mira esto puede ser que va a trabajar para usted

<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> 
+0

intenté esto y no funciona ... buggy. – MizAkita

3

obtener la fecha y hora

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

Informa tiempos como 00:03:04 como 0: 3: 4. –

52

actual si desea cierto tiempo la fecha de estilo MySQL utilizar este

2013/10/04 08:51:32

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) { 
     var month = '0'+month; 
    } 
    if(day.toString().length == 1) { 
     var day = '0'+day; 
    } 
    if(hour.toString().length == 1) { 
     var hour = '0'+hour; 
    } 
    if(minute.toString().length == 1) { 
     var minute = '0'+minute; 
    } 
    if(second.toString().length == 1) { 
     var second = '0'+second; 
    } 
    var dateTime = year+'/'+month+'/'+day+' '+hour+':'+minute+':'+second; 
    return dateTime; 
} 
1
dt= new Date(); 
alert(dt.toISOString().substring(8,10) + "/" + 
dt.toISOString().substring(5,7)+ "/" + 
dt.toISOString().substring(0,4) + " " + 
dt.toTimeString().substring(0,8)) 
+0

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 orientación sobre cómo depurar y solucionar su problema. Señalar, cuál es la idea detrás de su código, ayuda enormemente a comprender el problema y aplicar o modificar su solución. – Palec

+0

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

+0

Es primitivo para usted y ahora. ¿Qué tal en un año? ¿Qué pasa con alguien que no lee JavaScript tan fluidamente como tú? Le sugiero que agregue algo como: * Usar una nueva instancia de 'Fecha'. Analizar los componentes de la fecha de 'toISOString()' y agregar el tiempo de 'toTimeString()'. *. – Palec

2

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

Esta pregunta es bastante antiguo y las respuestas son demasiado. En lugar de esas funciones monstruosas, ahora podemos usar moment.js para obtener la fecha actual, lo que realmente lo hace muy fácil. Todo lo que tiene que hacer es moment.js incluyendo en nuestro proyecto y obtener así una fecha con formato, por ejemplo, por:

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

creo que lo hace manera más fácil de manejar fechas en JavaScript.

+1

¿Qué monstruosas funciones? ¿Reemplazar los rellenadores o los 5 revestimientos con varios K de código de caja negra? – mplungjan

24

sólo tiene que utilizar:

var d = new Date(); 
document.write(d.toLocaleString()); 
document.write("<br>"); 
+0

También algo similar: toUTCString(). Consulte https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString, donde se encuentra una lista de funciones similares en la barra lateral de la misma. – Steve

138

para obtener el tiempo y la fecha en que debe utilizar

new Date().toLocaleString(); 

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

Para obtener únicamente la fecha en que debe utilizar

new Date().toLocaleDateString(); 

>> "09/08/2014" 

Para obtener únicamente el tiempo que debería usar

new Date().toLocaleTimeString(); 

>> "2:35:56 AM" 

O si lo que desea es el momento en el formato hh:mm sin AM/PM por US Inglés

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

o para British Inglés

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

>> "02:35" 

Leer más here.

+0

esto funciona en la mayoría de los navegadores, pero puede verificar la compatibilidad [aquí] (https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString#Browser_Compatibility) – Quethzel

+1

, lástima que pueda Obtenga micro/milisegundos fácilmente con este – wordsforthewise

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 
+1

. Es mejor utilizar la marca de código para una mayor legibilidad. –

2

He encontrado la manera más sencilla de obtener la fecha y hora actuales en JavaScript de aquí - How to get current Date and Time using 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; 
0

Mi respuesta bien la intención es utilizar esta pequeña cantidad 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); 
1

Creo que ya es 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')); // devuelve en 1: 5: 30 PM

0
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

Necesitaba resolver esto para una pizarra de efectos secundarios. Esto es lo que ocurrió con después de tomar los elementos de unas pocas fuentes diferentes - El formateo 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 
0

Su simplicidad y la calidad

$(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, encontrar el violinista continuación para el ejemplo

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

-2

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

+0

Debe incluir algunos comentarios y no tener solo una publicación de solo código. – codechurn

Cuestiones relacionadas