Obtendo data e hora atuais em JavaScript


449

Eu tenho um script que imprime a data e hora atuais em JavaScript, mas DATEsempre está errado. Aqui está o código:

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

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

Qualquer ajuda? obrigado


10
Em geral, você deve ler a documentação das APIs que está usando. Aqui está alguma documentação para os objetos Data Javascript: developer.mozilla.org/en/JavaScript/Reference/Global_Objects/… . Tudo o que você precisa saber para solucionar seu problema pode ser encontrado lá.
9303 Steven Oxley


@ Ricardo: MDN é uma excelente referência para este e muitos outros assuntos. Por favor, use-o.
18712 Jon

5
As pessoas sempre reclamam de certas perguntas, mas há muito poucas perguntas sobre SO que não puderam ser respondidas lendo a documentação. Eu amo este site porque ele tem respostas concisas e exemplos de como fazer o que estou tentando fazer, exatamente como esta pergunta.
Chris afiada

3
quando as pessoas pesquisam no Google por aqui, em vez do documento da API, é tão ruim compartilhar o conhecimento sem fazer as pessoas se alimentarem mal?
Mauricio Gracia Gutierrez

Respostas:


577

.getMonth()retorna um número com base em zero; para obter o mês correto, você precisa adicionar 1; portanto, a ligação .getMonth()pode retornar 4e não 5.

Portanto, no seu código, podemos usar currentdate.getMonth()+1para gerar o valor correto. Além do que, além do mais:

  • .getDate()retorna o dia do mês <- este é o que você deseja
  • .getDay()é um método separado do Dateobjeto que retornará um número inteiro que representa o dia atual da semana (0-6) 0 == Sundayetc.

portanto, seu código deve ficar assim:

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

As instâncias de data JavaScript herdam de Date.prototype. Você pode modificar o objeto de protótipo do construtor para afetar propriedades e métodos herdados pelas instâncias de data do JavaScript

Você pode usar o Dateobjeto prototype para criar um novo método que retornará a data e hora de hoje. Esses novos métodos ou propriedades serão herdados por todas as instâncias do Dateobjeto, tornando-o especialmente útil se você precisar reutilizar essa funcionalidade.

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

Você pode simplesmente recuperar a data e a hora fazendo o seguinte:

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

Ou chame o método inline para que ele simplesmente seja -

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

11
Pequena alteração por 12 horas dias & 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 nice sugestão. Eu escrevi um método mais utilizável do objeto date desde a última atualização deste post, que chamo de now()um parâmetro booleano para determinar se deve retornar apenas a data ou a data e a hora, e também um segundo parâmetro que especifica o formato da data deve ser devolvido em isto é, dd / mm / aaaa etc
Mark Walters

1
Observe que horários como 00:04:02 serão renderizados como 0: 4: 2 na primeira sugestão, o que não foi solicitado. Para corrigir isso, pode-se acrescentar os operadores ternários da segunda sugestão: (date.getHours() < 10 ? "0" : "") + date.getHours() + ":" + (date.getMinutes() < 10 ? "0" : "") + date.getMinutes() + ":" + (date.getSeconds() < 10 ? "0" : "") + date.getSeconds();
Matt

1
Talvez um pouco âmago da questão; mas o carimbo de data / hora não deve ser armazenado em um objeto temporário para evitar a alteração da data / hora atual durante os métodos de recuperação / impressão?
SaW

1
Update: ('0' + this.getDate()).slice(-2)parece ser mais curto do que(this.getDate() < 10)?"0":"") + this.getDate()
Tân

279

Para obter hora e data, você deve usar

    new Date().toLocaleString();

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

Para obter apenas a data que você deve usar

    new Date().toLocaleDateString();

>> "09/08/2014"

Para obter apenas o tempo que você deve usar

    new Date().toLocaleTimeString();

>> "2:35:56 AM"

Ou se você quiser apenas a hora no formato hh:mmsem AM / PM para inglês dos EUA

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

ou para inglês britânico

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

>> "02:35"

Leia mais aqui .


3
isso funciona na maioria dos navegadores, mas você pode verificar a compatibilidade aqui
Quethzel Díaz

1
muito ruim você não pode obter micro / milissegundos facilmente com este
wordsforthewise

1
Mais um. Eu estava procurando uma maneira de manter os dois dígitos. Eu estava usando getHours()e getMinutes()antes, mas então você não obter o formato, 01, apenas a 1.
John

68

Para este verdadeiro estilo mysql, use esta função abaixo: 2019/02/28 15:33:12

  • Se você clicar no botão "Executar snippet de código" abaixo
  • Ele mostrará um exemplo simples de relógio digital em tempo real
  • A demonstração aparecerá abaixo do snippet 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();

Altere o .getDay()método para .GetDate()e adicione um ao mês, pois conta meses a partir de 0.


5

Isso deve fazer o truque:

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

Você precisa usar getDate () para obter a parte da data. A função getDay () retorna o número do dia (domingo = 0, segunda-feira = 1 ...) e o getMonth () retorna um índice com base em 0, portanto, você deve incrementá-lo em 1.

 var currentdate = new Date(); 

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

4

Encontrei a maneira mais simples de obter data e hora atual em JavaScript a partir daqui - Como obter data e hora atuais 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

obter data e hora atuais

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

Relata horários como 00:03:04 como 0: 3: 4.
Keir Finlow-Bates

2

.getDay retorna o dia da semana. Você precisa .getDate. .getMonth retorna valores de 0 a 11. Você precisará adicionar 1 ao resultado para obter o número do mês "humano".


2

Esta pergunta é bastante antiga e as respostas também. Em vez dessas funções monstruosas, agora podemos usar o moment.js para obter a data atual, o que realmente facilita muito. Tudo o que precisa ser feito é incluir moment.js em nosso projeto e obter uma data bem formatada, por exemplo:

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

Eu acho que isso facilita a manipulação de datas em javascript.


2
Que funções monstruosas - substituir oneliners ou 5 liners por vários K de código da caixa preta?
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 pequeno código é fácil e funciona em qualquer lugar.

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

há espaço para projetar


1

Acho que estou muito atrasado para compartilhar minha resposta, mas acho que valerá a 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')); // retorna às 13:30:30


1

Eu precisava descobrir isso para uma lista de efeitos colaterais. Aqui está o que eu criei depois de pegar elementos de algumas fontes diferentes - A formatação é 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

JS básico (bom para aprender): usamos a função Date () e fazemos tudo o que precisamos para mostrar a data e o dia em nosso 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);


Nó JS (rápido e fácil): instale o npm pagckage usando ( npm install date-and-time ) e execute o abaixo.

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

Inclua explicações sobre o que seu código faz e como ele responde à pergunta. Se você receber um trecho de código como resposta, talvez não saiba o que fazer com ele. A resposta deve fornecer ao OP e aos futuros visitantes orientações sobre como depurar e corrigir o problema. Assinalar, qual é a idéia por trás do seu código, ajuda muito no entendimento do problema e na aplicação ou modificação de sua solução.
Palec

Este código é muito primitivo para explicação. Basta executá-lo no console
GraninDm 08/08/14

É primitivo para você e agora. Que tal daqui a um ano? E para alguém que não lê JavaScript tão fluentemente quanto você? Sugiro que você adicione algo ao longo das linhas de Usar nova instância de Date. Analise os componentes da data toISOString()e inclua a hora toTimeString(). .
Palec 8/08/14

Essa abordagem não é ótima. Difícil de ler o código, envolve análise desnecessária. Por exemplo, toISOString().substring(8,10)é o mesmo que getFullYear().
Palec 8/08/14

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

Minha resposta bem intencionada é usar esse pequeno pedaço 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

É simples e excelente

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

encontre o violinista abaixo para o exemplo

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


0

Se alguém está em busca de função

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

Verifique se pode funcionar para você

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


Você deve incluir alguns comentários e não ter apenas uma postagem apenas de código.
Codecurno
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.