2013-08-31 4 views
5

Я пытаюсь отправить штамп времени UTC для службы отдыха с моего javascript-клиента. Я не смог создать временную марку, например, "2013-08-30T19:52:28.226Z" с помощью javascript.Создать метку времени UTC в Javascript

var rawDate = date.getUTCDate().toString(); 

Я вижу этот пример, но не полезен для меня. utc-time-stame-javascript

+0

Вы имели в виду 'new Date()'? Он возвращает (полную) текущую дату со всеми свойствами объекта Date в вашем случае '(новая дата()). ToJSON()' должен работать –

+0

Как мой вопрос, я хочу 2013-08-31T9: 4: 51.859 Z in js –

+0

new Date(). ToJSON() return 2013-08-31T09: 04: 51.863Z –

ответ

8

Вы можете использовать date.toJSON().

new Date().toJSON().toString() 
"2013-08-31T09:05:07.740Z" 

См MDN или MSDN

+0

посмотреть мой результат желания 2013-08-31T9: 9: 55.893Z –

+0

Oh ow. Ссылка на W3 Schools? Вот лучший ресурс, обсуждающий эту функцию: [MDN Date # toJSON] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toJSON?redirectlocale=en-US&redirectslug=JavaScript % 2FReference% 2FGlobal_Objects% 2FDate% 2FtoJSON) –

+0

В чем проблема с W3 Schools? –

0

1) Получить дату.

var now = new Date(); 

2) Преобразование в формат UTC, как показано ниже, для reference.

var now_utc = new Date(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), 
        now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds()); 

3) Используя toJSON, получите формат.

now_utc.toJSON() 

Наконец,

var now = new Date(); 
var now_utc = new Date(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds()); 
alert(now_utc.toJSON()); 

Проверить это JSFiddle

+0

Не utc time .. 2013-08-31T03: 44: 49.000Z –

1
function getUTCISODateString(d){ 
    function pad(n){return n<10 ? '0'+n : n}; 
    function threePad(n){return n<10 ? '00'+n : (n < 100 ? '0' + n : n)}; 
    return d.getUTCFullYear()+'-' 
      + pad(d.getUTCMonth()+1)+'-' 
      + pad(d.getUTCDate())+'T' 
      + pad(d.getUTCHours())+':' 
      + pad(d.getUTCMinutes())+':' 
      + pad(d.getUTCSeconds())+ '.' 
        + threePad(d.getUTCSeconds()) + 'Z'; 
} 

Не тестировалось:

+0

'new Date(). ToJSON()' –

+0

@izuriel да, конечно, если IE7 не нацелен. – sabithpocker

+0

Если IE7 заботился о поддержке, я бы привел в библиотеку, например [json2] (https://github.com/douglascrockford/JSON-js), чтобы полифонировать эту функцию на 'Date', а также' JSON.stringify 'и' JSON.parse'. –

0

Эта библиотека может сделать это для вас. Не то, что большая либо http://momentjs.com

moment().toISOString() 
// 2013-02-04T22:44:30.652Z 
+0

Формат отключен. Его требования требуют, чтобы миллисекунды добавлялись до часового пояса. –

+0

@izuriel Обновлен ответ, библиотека делает любой формат –

+0

Включение «момента» здесь (в то время как отличная библиотека) не требуется, если не требуется больше обработки даты. Как ответил Бенуа Бланчон, это может быть сделано изначально с помощью 'new Date(). ToJSON()', но еще проще с 'JSON.stringify ({post_date: new Date()});' и в этом случае он вызывается автоматически. Я должен был упомянуть об этом раньше, но хорошо по поводу обновления! –

0

Я хотел бы предложить расширить объект Date() и построение строки самостоятельно, момент делает это для вас, но я не уверен, что в точном формате вам нужно. Просто написали это быстро, но это должна быть достойная плата стартера.

Date.prototype.toLongUTCString = function() { 
    var self = this; 
    return self.getUTCFullYear() + '-' + (self.getUTCMonth() < 10 ? '0' : '') + 
      (self.getUTCMonth() +1)+ '-' + (self.getUTCDate() < 10 ? '0' : '') + 
      self.getUTCDate() + 'T' + self.getUTCHours() + ':' + self.getUTCMinutes() + 
      ':' + self.getUTCSeconds() + '.' + self.getUTCMilliseconds() + 'Z'; 
    }; 

Смотреть еще:

http://jsfiddle.net/4Kczy/

/редактировать: никто не удосужился спросить, что нужно браузеры поддерживаемое (кашель, IE).

+0

Эта функциональность может быть добавлена ​​в класс' Date', а также полное '' JSON' -разбор/строковое построение с помощью [json2] (https://github.com/douglascrockford/JSON-js). Обычное эмпирическое правило, кстати, позволяет максимально расширить основные классы. –

+0

@izuriel - это зависит от того, что вы расширяете - например, эта функция никогда не будет реализована в основной спецификации (в отличие от map/filter/reduce, которая может быть реализована в какой-то момент в IE). Что касается json2 lib - вам не всегда нужна бензопила для вырубки ветки. Ура! – konp

Смежные вопросы