Как получить форматированное время даты, как 2009-05-29 21:55:57 с помощью JavaScript? - PullRequest
28 голосов
/ 29 мая 2009

при использовании новой даты я получаю что-то вроде следующего:

Пт, 29 мая 2009 22:39:02 GMT + 0800 (стандартное время Китая)

но я хочу, чтобы xxxx-xx-xx xx: xx: xx отформатированная строка времени

Ответы [ 10 ]

46 голосов
/ 29 мая 2009

Хотя в некоторых случаях он не дополняется двумя символами, он выполняет то, что, как я ожидаю, вы хотите

function getFormattedDate() {
    var date = new Date();
    var str = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate() + " " +  date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds();

    return str;
}
26 голосов
/ 20 июня 2015

в ответах Джонатана отсутствует ведущий ноль. Это простое решение:

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

jsfiddle

5 голосов
/ 30 октября 2012

Вы можете использовать метод 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. Посмотрите выше для лучших ответов.

3 голосов
/ 29 мая 2009

То, что вы ищете, это toISOString , который будет частью ECMAScript Fifth Edition . Тем временем вы можете просто использовать метод 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';
};
3 голосов
/ 29 мая 2009

это может быть излишним для того, что вы хотите, но вы смотрели на datejs ?

2 голосов
/ 15 июня 2016

Попробуй это.

var datetime = new Date().toJSON().slice(0,10) 
    + " " + new Date(new Date()).toString().split(' ')[4];

console.log(datetime);
0 голосов
/ 07 июля 2016

Просто еще одно решение: Я пытался получить тот же формат (ГГГГ-ММ-ДД ЧЧ: ММ: СС) , но 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)

Проверка кода в JSFIDDLE

0 голосов
/ 04 сентября 2014

Преобразование миллисекунд в формат даты с использованием 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);
})();
0 голосов
/ 20 марта 2012

Библиотека JavaScript Any + Time (TM) * AnyTime.Converter легко преобразует объект JS Date в ISO или практически любой другой формат ... фактически, нужный формат является стандартным формат, чтобы вы могли просто сказать:

(new AnyTime.Converter()).format(new Date());
0 голосов
/ 29 мая 2009
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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...