Получение текущей даты и времени в JavaScript
У меня есть скрипт на 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 ответ(ов)
Метод .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();
Для получения вывода в истинном стиле 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
.
Чтобы отобразить текущую дату и время в локальном формате, вы можете использовать следующий код:
var d = new Date();
document.write(d.toLocaleString());
document.write("<br>");
Этот код создаёт новый объект Date
, который хранит текущую дату и время, а затем выводит его в виде строки с использованием метода toLocaleString()
, который форматирует дату в соответствии с локальными стандартами. После этого добавляется перенос строки.
Чтобы исправить ваш код, необходимо внести некоторые изменения. Во-первых, вместо метода .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();
Проверьте, пожалуйста, что код работает правильно и отображает текущую дату и время в нужном формате.
Используя значение по умолчанию Date()
, вы можете получить текущую дату и время следующим образом:
const now = new Date();
console.log(now); // Вывод: Thu Sep 23 2021 13:24:52 GMT-0400 (Eastern Daylight Time)
Для различных форматов даты и времени вы можете использовать метод toLocaleString()
:
Короткий формат даты:
MM/DD/YYYY
const now = new Date(); const formattedDate = now.toLocaleString('en-US', { dateStyle: 'short' }); console.log(formattedDate); // Вывод: "9/23/2021"
Длинный формат даты:
День недели, Месяц День, Год
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"
Короткий формат времени:
HH:MM AM/PM
const now = new Date(); const formattedDate = now.toLocaleString('en-US', { timeStyle: 'short' }); console.log(formattedDate); // Вывод: "1:24 PM"
Длинный формат времени:
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"
Формат ISO 8601:
YYYY-MM-DDTHH:MM:SSZ
const now = new Date(); const isoDate = now.toISOString(); console.log(isoDate); // Вывод: "2021-09-23T17:24:52.740Z"
Таким образом, вы можете форматировать текущую дату и время в различные стандарты в соответствии с вашими требованиями.
Преобразование Unix-метки времени в формат времени в JavaScript
Где найти документацию по форматированию даты в JavaScript?
Форматирование даты в JavaScript в виде yyyy-mm-dd
Как вычесть дни из обычной даты?
Как преобразовать дату в UTC?