Как получить форматированное время даты, как 2009-05-29 21:55:57 с помощью JavaScript?
При использовании новой даты я получаю что-то вроде следующего:
Пт 29 мая 2009 22:39:02 GMT+0800 (стандартное время Китая)
но то, что я хочу, это xxxx-xx-xx xx:xx:xx отформатированная строка времени
11 ответов
Хотя в некоторых случаях он не дополняется двумя символами, он делает то, что я ожидаю, что вы хотите
function getFormattedDate() {
var date = new Date();
var str = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate() + " " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds();
return str;
}
В ответах Джонатана отсутствует ведущий ноль. Существует простое решение этого:
function getFormattedDate(){
var d = new Date();
d = d.getFullYear() + "-" + ('0' + (d.getMonth() + 1)).slice(-2) + "-" + ('0' + d.getDate()).slice(-2) + " " + ('0' + d.getHours()).slice(-2) + ":" + ('0' + d.getMinutes()).slice(-2) + ":" + ('0' + d.getSeconds()).slice(-2);
return d;
}
в основном добавьте 0, а затем просто возьмите 2 последних символа. Так что 031 займет 31. 01 займет 01...
Вы можете использовать метод toJSON(), чтобы получить формат стиля DateTime
var today = new Date().toJSON();
// produces something like: 2012-10-29T21:54:07.609Z
Оттуда вы можете очистить его...
Чтобы получить дату и время:
var today = new Date().toJSON().substring(0,19).replace('T',' ');
Чтобы получить только дату:
var today = new Date().toJSON().substring(0,10).replace('T',' ');
Чтобы захватить только время:
var today = new Date().toJSON().substring(10,19).replace('T',' ');
Изменить: Как уже отмечали другие, это будет работать только для UTC. Посмотрите выше для лучших ответов.
То, что вы ищете, это isostring, который будет частью пятого издания ECMAScript. В то же время вы можете просто использовать метод toJSON, найденный в json2.js от json.org.
Интересующая вас часть будет:
Date.prototype.toJSON = function (key) {
function f(n) {
// Format integers to have at least two digits.
return n < 10 ? '0' + n : n;
}
return this.getUTCFullYear() + '-' +
f(this.getUTCMonth() + 1) + '-' +
f(this.getUTCDate()) + 'T' +
f(this.getUTCHours()) + ':' +
f(this.getUTCMinutes()) + ':' +
f(this.getUTCSeconds()) + 'Z';
};
Это может быть излишним за то, что вы хотите, но вы смотрели на datejs?
Попробуй это.
var datetime = new Date().toJSON().slice(0,10)
+ " " + new Date(new Date()).toString().split(' ')[4];
console.log(datetime);
Модернизированная версия ответа @Toskan :
const getFormattedDate = (d = new Date()) =>
d.getFullYear() + "-" +
(d.getMonth() + 1).toString().padStart(2, '0') + "-" +
d.getDate().toString().padStart(2, '0') + " " +
d.getHours().toString().padStart(2, '0') + ":" +
d.getMinutes().toString().padStart(2, '0') + ":" +
d.getSeconds().toString().padStart(2, '0');
console.log(getFormattedDate()); // 2022-07-28 12:44:44
Объект AnyTime.Converter библиотеки JavaScript Any + Time ™ легко преобразует объект JS Date в ISO или практически в любой другой формат... фактически, нужный формат является форматом по умолчанию, поэтому вы можете просто сказать:
(new AnyTime.Converter()).format(new Date());
Преобразование миллисекунд в формат даты с использованием JavaScript
- для справки смотрите ниже jsfiddle
http://jsfiddle.net/kavithaReddy/cspn3pj0/1/
function () {
var values = "/Date(1409819809000)/";
var dt = new Date(parseInt(values.substring(6, values.length - 2)));
var dtString1 = (dt.getMonth() + 1) + "/" + dt.getDate() + "/" + dt.getFullYear();
alert(dtString1);
})();
Date.prototype.toUTCArray= function(){
var D= this;
return [D.getUTCFullYear(), D.getUTCMonth(), D.getUTCDate(), D.getUTCHours(),
D.getUTCMinutes(), D.getUTCSeconds()];
}
Date.prototype.toISO= function(t){
var tem, A= this.toUTCArray(), i= 0;
A[1]+= 1;
while(i++<7){
tem= A[i];
if(tem<10) A[i]= '0'+tem;
}
return A.splice(0, 3).join('-')+'T'+A.join(':');
// you can use a space instead of 'T' here
}
Date.fromISO= function(s){
var i= 0, A= s.split(/\D+/);
while(i++<7){
if(!A[i]) A[i]= 0;
else A[i]= parseInt(A[i], 10);
}
--s[1];
return new Date(Date.UTC(A[0], A[1], A[2], A[3], A[4], A[5]));
}
var D= new Date();
var s1= D.toISO();
var s2= Date.fromISO(s1);
alert('ISO= '+s1+'\nlocal Date returned:\n'+s2);
Просто другое решение: я пытался получить тот же формат (ГГГГ-ММ-ДД ЧЧ: ММ: СС), но date.getMonth() был найден неточным. Поэтому я решил получить формат самостоятельно.
Этот код был развернут в начале 2015 года, и до сегодняшнего дня он работает нормально.
var m_names =["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
var d = new Date();
var spl = d.toString().split(' ');
var mnth = parseInt(m_names.indexOf(spl[1])+1).toString();
mnth = (mnth.length == 1) ? '0'+mnth : mnth
// yyyy - mm - dd hh:mm:ss
var data = spl[3]+'-'+mnth+'-'+spl[2]+' '+spl[4]
alert(data)