6

Получение текущей даты и времени в JavaScript

1

У меня есть скрипт на JavaScript, который выводит текущую дату и время, но дата всегда отображается неправильно. Вот код:

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. Как можно исправить эту проблему с отображением даты?

5 ответ(ов)

7

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

В вашем коде вы можете использовать currentdate.getMonth() + 1, чтобы вывести правильное значение. Также стоит отметить следующие методы:

  • .getDate() возвращает день месяца <-- это тот, который вам нужен.
  • .getDay() является отдельным методом объекта Date, который возвращает целое число, представляющее текущий день недели (0-6), где 0 == Воскресенье и так далее.

Таким образом, ваш код должен выглядеть следующим образом:

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, что особенно полезно, если вам нужно повторно использовать эту функциональность.

// Для сегодняшней даты
Date.prototype.today = function () { 
    return ((this.getDate() < 10) ? "0" : "") + this.getDate() + "/" + (((this.getMonth() + 1) < 10) ? "0" : "") + (this.getMonth() + 1) + "/" + this.getFullYear();
}

// Для текущего времени
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();

Или вызвать метод непосредственно, так:

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

Для получения вывода в истинном стиле MySQL используйте следующую функцию: 2023-11-28 15:33:12.

Если вы нажмете кнопку 'Run code snippet' ниже, это продемонстрирует простой пример цифровых часов в реальном времени. Демонстрация появится под кодом.

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

// пример использования: часы в реальном времени
setInterval(function() {
    currentTime = getDateTime();
    document.getElementById("digital-clock").innerHTML = currentTime;
}, 1000);
<div id="digital-clock"></div>

Этот код обновляет элемент с id="digital-clock" каждую секунду, отображая текущее время в формате YYYY-MM-DD HH:MM:SS.

0

Чтобы отобразить текущую дату и время в локальном формате, вы можете использовать следующий код:

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

Этот код создаёт новый объект Date, который хранит текущую дату и время, а затем выводит его в виде строки с использованием метода toLocaleString(), который форматирует дату в соответствии с локальными стандартами. После этого добавляется перенос строки.

0

Чтобы исправить ваш код, необходимо внести некоторые изменения. Во-первых, вместо метода .getDay() вам следует использовать метод .getDate() для получения текущего дня месяца. Во-вторых, для корректного отображения месяца, нужно прибавить 1 к результату метода .getMonth(), так как он возвращает месяцы, начиная с 0 (где 0 - январь, 1 - февраль и так далее).

Вот исправленный вариант вашего кода:

var currentdate = new Date();

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

Проверьте, пожалуйста, что код работает правильно и отображает текущую дату и время в нужном формате.

0

Используя значение по умолчанию Date(), вы можете получить текущую дату и время следующим образом:

const now = new Date();
console.log(now); // Вывод: Thu Sep 23 2021 13:24:52 GMT-0400 (Eastern Daylight Time)

Для различных форматов даты и времени вы можете использовать метод toLocaleString():

  1. Короткий формат даты: MM/DD/YYYY

    const now = new Date();
    const formattedDate = now.toLocaleString('en-US', { dateStyle: 'short' });
    console.log(formattedDate);
    // Вывод: "9/23/2021"
    
  2. Длинный формат даты: День недели, Месяц День, Год

    const now = new Date();
    const formattedDate = now.toLocaleString('en-US', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' });
    console.log(formattedDate);
    // Вывод: "Thursday, September 23, 2021"
    
  3. Короткий формат времени: HH:MM AM/PM

    const now = new Date();
    const formattedDate = now.toLocaleString('en-US', { timeStyle: 'short' });
    console.log(formattedDate);
    // Вывод: "1:24 PM"
    
  4. Длинный формат времени: HH:MM:SS AM/PM Часовой пояс

    const now = new Date();
    const formattedDate = now.toLocaleString('en-US', { hour: 'numeric', minute: 'numeric', second: 'numeric', hour12: true, timeZoneName: 'short' });
    console.log(formattedDate);
    // Вывод: "1:24:52 PM EDT"
    
  5. Формат ISO 8601: YYYY-MM-DDTHH:MM:SSZ

    const now = new Date();
    const isoDate = now.toISOString();
    console.log(isoDate);
    // Вывод: "2021-09-23T17:24:52.740Z"
    

Таким образом, вы можете форматировать текущую дату и время в различные стандарты в соответствии с вашими требованиями.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь