Отримання поточної дати та часу в JavaScript


450

У мене є сценарій, який друкує поточну дату та час у JavaScript, але DATEце завжди неправильно. Ось код:

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

Він повинен друкувати 18/04/2012 15:07:33та друкувати3/3/2012 15:07:33

Будь-яка допомога? Дякую


10
Загалом, ви повинні намагатися прочитати документацію API, який ви використовуєте. Ось деяка документація для об’єктів дати Javascript: developer.mozilla.org/en/JavaScript/Reference/Global_Objects/… . Все, що потрібно знати, щоб виправити свою проблему, можна знайти там.
Стівен Окслі


@Ricardo: MDN - прекрасна довідка для цього та багатьох інших питань. Будь ласка, використовуйте його.
Джон

5
Люди завжди скаржаться на певні запитання, але є дуже мало запитань на ТА, на які не можна було відповісти, прочитавши документацію. Мені подобається цей сайт, оскільки він містить стислі відповіді та приклади того, як робити те, що я намагаюся зробити, точно так, як це робить.
Кріс Шарп

3
коли люди google потрапляють сюди замість api doc, чи так погано ділитися знаннями, не змушуючи людей годувати погано?
Маурісіо Грація Гутьєррес

Відповіді:


579

.getMonth()повертає нульове число, щоб отримати правильний місяць, вам потрібно додати 1, тому дзвінок .getMonth()в травень повернеться, 4а не 5.

Тож у вашому коді ми можемо використовувати currentdate.getMonth()+1для виведення правильного значення. На додачу:

  • .getDate()повертає день місяця <- це той, який ви хочете
  • .getDay()це окремий метод Dateоб'єкта, який поверне ціле число, що представляє поточний день тижня (0-6) 0 == Sundayтощо

тож ваш код повинен виглядати так:

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

Екземпляри дати JavaScript успадковуються від Date.prototype. Ви можете змінити об'єкт-прототип конструктора, щоб вплинути на властивості та методи, успадковані екземплярами дати JavaScript

Ви можете використовувати Dateоб'єкт-прототип, щоб створити новий метод, який поверне сьогоднішню дату та час. Ці нові методи або властивості будуть успадковані всіма примірниками Dateоб'єкта, що зробить його особливо корисним, якщо вам потрібно повторно використовувати цю функціональність.

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

Потім можна просто отримати дату та час, виконавши наступне:

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

Або зателефонуйте методу inline, щоб це було просто -

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

11
Невелика зміна на 12 годинні дні та 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 приємна пропозиція. Я написав більш корисний метод об'єкта дати з моменту останнього оновлення цієї публікації, який я викликаю, now()який приймає булевий параметр, щоб визначити, чи потрібно повертати тільки дату або дату і час, а також другий параметр, який визначає формат, яку дату слід повернути, тобто dd / mm / yyyy тощо.
Марк Уолтерс

1
Зверніть увагу, що такі часи, як 00:04:02, у першій пропозиції будуть відображатися як 0: 4: 2, а це не те, що просили. Щоб виправити це, можна додати потрійних операторів другої пропозиції: (date.getHours() < 10 ? "0" : "") + date.getHours() + ":" + (date.getMinutes() < 10 ? "0" : "") + date.getMinutes() + ":" + (date.getSeconds() < 10 ? "0" : "") + date.getSeconds();
Метт

1
Можливо, трохи азотно-зернистий; але чи не слід зберігати часові позначки у тимчасовому об'єкті, щоб уникнути зміни поточної дати / часу під час пошуку / друку?
SaW

1
Оновлення: ('0' + this.getDate()).slice(-2)здається, коротше(this.getDate() < 10)?"0":"") + this.getDate()
TAn

279

Щоб отримати час та дату, вам слід скористатися

    new Date().toLocaleString();

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

Щоб отримати тільки дату, яку ви повинні використовувати

    new Date().toLocaleDateString();

>> "09/08/2014"

Щоб отримати лише час, який ви повинні використати

    new Date().toLocaleTimeString();

>> "2:35:56 AM"

Або якщо ви просто хочете час у форматі hh:mmбез AM / PM для англійської США

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

або для англійської англійської

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

>> "02:35"

Детальніше читайте тут .


3
це працює в більшості браузерів, але ви можете перевірити сумісність тут
Quethzel Díaz

1
занадто погано, що ви не можете легко отримати мікро / мілісекунди з цим
слів

1
Плюс один. Я шукав спосіб зберегти обидві цифри. Я використовував getHours()і getMinutes()раніше, але тоді ви не отримуєте формат, 01, лише 1.
Іван,

68

Для цього справжнього стилю mysql використовуйте цю функцію нижче: 2019/02/28 15:33:12

  • Якщо натиснути кнопку "Запустити фрагмент коду" нижче
  • Він покаже простий приклад цифрового годинника в реальному часі
  • Демонстрація демонструється під фрагментом коду.

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

Змініть .getDay()метод на .GetDate()та додайте один на місяць, оскільки він рахує місяці від 0.


5

Для цього слід зробити фокус:

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

Вам потрібно використовувати getDate (), щоб отримати частину дати. Функція getDay () повертає номер дня (неділя = 0, понеділок = 1 ...), а getMonth () повертає індекс на основі 0, тому вам потрібно збільшити його на 1.

 var currentdate = new Date(); 

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


3

отримати поточну дату та час

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

Часи звітів, такі як 00:03:04, як 0: 3: 4.
Кейр Фінлоу-Бейтс

2

.getDay повертається день тижня. Натомість вам потрібен .getDate. .getMonth повертає значення від 0 до 11. Вам потрібно буде додати 1 до результату, щоб отримати "людський" номер місяця.


2

Це питання досить старе, і відповіді теж є. Замість цих жахливих функцій ми тепер можемо використовувати moment.js, щоб отримати поточну дату, що насправді робить це дуже просто. Все, що потрібно зробити, це включити moment.js до нашого проекту та отримати чітко відформатовану дату, наприклад:

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

Я думаю, що це полегшує обробку дат у JavaScript.


2
Які жахливі функції - замінити лінійки чи 5 вкладишів на кілька K код коду чорного кольору?
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

Цей маленький код простий і працює скрізь.

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

є можливість проектувати


1

Я думаю, що я дуже пізно поділюсь своєю відповіддю, але я думаю, що це буде вартим.

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')); // повернення за 1: 5: 30 вечора


1

Мені потрібно було розібратися в цьому для шиферу після наслідків. Ось що я придумав, взявши елементи з кількох різних джерел - Форматування - MM / DD / YYYY 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 (добре вчитися): ми використовуємо функцію Date () і робимо все, що потрібно, щоб відобразити дату і день у нашому спеціальному форматі.

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


Вузол JS (швидкий і простий): Встановіть пакунок npm, використовуючи ( npm install date and time ), після чого запустіть нижче.

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

Будь ласка, додайте пояснення того, що робить ваш код, і як він відповідає на питання. Якщо ви отримаєте фрагмент коду як відповідь, ви можете не знати, що з ним робити. Відповідь має дати керівництву ОП та майбутнім відвідувачам про те, як налагодити та вирішити свою проблему. Вказуючи, що ідея вашого коду, значно допомагає зрозуміти проблему та застосувати чи змінити своє рішення.
Палець

Цей код дуже примітивний для пояснення. Просто запустіть його в консолі
GraninDm

Це примітивно для вас і зараз. А як за рік? Що з тим, хто не читає JavaScript так легко, як ви? Я пропоную вам додати щось у порядку використання нового екземпляра Date. Проаналізуйте компоненти дати від toISOString()і додайте час з toTimeString(). .
Палець

Такий підхід не є оптимальним. Важко читати код, передбачає непотрібний аналіз. Наприклад toISOString().substring(8,10), те саме, що getFullYear().
Палець

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

Моя цілеспрямована відповідь - використовувати цей крихітний шматочок 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

Його просто і чудово

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

будь ласка, знайдіть нижченаведеного скрипта для прикладу

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


0

Якщо хтось шукає функції

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

Перевірте це, можливо, це допоможе вам

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


Ви повинні включити деякі коментарі, а не мати лише кодове повідомлення.
codechurn
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.