Получить строку GMT от текущей даты - PullRequest
2 голосов
/ 03 апреля 2012

Я могу получить нужный мне выходной формат, но не точное время.Мне нужно это по Гринвичу (что +4 часа)

var dt = new Date();
var dt2 = dt.toString('yyyyMMddhhmmss');

Есть идеи?Вывод выглядит следующим образом:

20120403031408

Я могу получить GMT в стандартном формате строки, выполнив:

dt.toUTCString();

, но я не могу преобразовать его обратно в строку yyyyMMddhhmmss

РЕДАКТИРОВАТЬ: я использую библиотеку date.js

Ответы [ 2 ]

1 голос
/ 04 апреля 2012

date.js toString(format) не имеет возможности указать «UTC» при форматировании дат. Сам метод (внизу файла) никогда не ссылается ни на один из Date getUTC... методов , который необходим для поддержки такой опции.

Вы можете рассмотреть возможность использования другой библиотеки, такой как dateFormat Стивена Левитана. С его помощью вы можете либо префикс format с UTC:, либо передать true после format:

var utcFormatted = dateFormat(new Date(), 'UTC:yyyyMMddhhmmss');
var utcFormatted = dateFormat(new Date(), 'yyyyMMddhhmmss', true);

// also
var utcFormatted = new Date().format('yyyyMMddhhmmss', true);

Вы также можете написать свою собственную функцию, как Доминик продемонстрировал .

1 голос
/ 03 апреля 2012

Ключ должен использовать функции getUTC:

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date

/* use a function for the exact format desired... */  
function ISODateString(d){  
  function pad(n) { return n < 10 ? '0'+n : n }
  return d.getUTCFullYear() + '-'  
       + pad(d.getUTCMonth() +1) + '-'  
       + pad(d.getUTCDate()) + 'T'  
       + pad(d.getUTCHours()) + ':'  
       + pad(d.getUTCMinutes()) + ':'  
       + pad(d.getUTCSeconds()) + 'Z'  
}  

var d = new Date();  
console.log(ISODateString(d)); // prints something like 2009-09-28T19:03:12Z  
...