2016-01-09 3 views
3

Я вытаскиваю некоторые данные из двух разных API, и я хочу, чтобы объекты позже.Изменение формата даты javascript

Однако у меня есть два разных формата даты: этот формат «1427457730» и этот формат «2015-04-10T09: 12: 22Z». Как я могу изменить формат одного из них, чтобы у меня был тот же формат, с которым можно работать?

$.each(object, function(index) { 
    date = object[index].updated_at; 
} 
+0

Загрузить ['es5-shim'] (https://github.com/es-shims/es5-shim), чтобы убедиться, что среда обрабатывает [' toISOString'] (https://developer.mozilla.org/ ru-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString), затем 'date = (/^\d+$/).test(d)? new Date (d * 1000) .toISOString(). slice (0, -5) + 'Z': d; 'где' d' is 'object [index] .updated_at' Теперь все форматы будут похожи на' '2015- 04-10T09: 12: 22Z "' – Xotic750

ответ

2

Что вы, вероятно, хотите в javascript, это объекты даты.
Первая строка - секунды с эпохи, javascript - миллисекунды, поэтому умножьте ее на 1000;
Вторая строка является действительной датой ISO, поэтому, если строка содержит дефис, просто передайте ее в new Date.

var date = returned_date.indexOf('-') !== -1 ? returned_date : returned_date * 1000; 

var date_object = new Date(date); 

Создание обоих типов в даты объектов, можно даже превратить его в удобную функцию

function format_date(date) { 
    return new Date(date.indexOf('-') !== -1 ? date : date * 1000); 
} 

FIDDLE

+0

Это также отличный способ его решения. с чем было бы легче работать, таким образом? или метод @robertklep? В будущем я хотел бы заказать объекты, хронологические на основе этих дат. – user3199999

+1

. Что от вас зависит. Я полагаю, это берет оба типа и возвращает объекты, которые вы тогда могли бы вставить в массив, и просто сортировать их – adeneo

+0

Я попытался сортировать это сегодня, но он не будет сортировать. Я использую .sort(); на массиве. Я сортирую красиво, если я заполняю массив чем-то другим, как строки. https://dl.dropboxusercontent.com/u/1207224/Screen%20Shot%202016-01-10%20at%2013.20.36.png любые предложения по сортировке с помощью функции, которую вы написали? – user3199999

4

Вот один вариант:

var timestamp = 1427457730; 
var date  = new Date(timestamp * 1000); // wants milliseconds, not seconds 
var dateString = date.toISOString().replace(/\.\d+Z/, 'Z'); // remove the ms 

dateString теперь будет 2015-03-27T12:02:10Z.

+0

Это сработало для меня. если получил то же форматирование отлично спасибо! – user3199999

2

Посмотрите на http://momentjs.com/. Это библиотека форматирования даты и времени для JavaScript - очень простая в использовании и чрезвычайно гибкая.

+0

спасибо за подсказку, хотя, если возможно, я бы не хотел использовать дополнительные плагины, так как это единственная дата/время, с которым я работаю – user3199999

3

Попробуйте moment.js

var timestamp = 1427457730; 
 
var date  = '2015-04-10T09:12:22Z'; 
 

 
var m1 = moment(timestamp); 
 
var m2 = moment(date); 
 

 
console.log(m1); 
 
console.log(m2);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.11.1/moment.min.js"></script>

Вы можете использовать .format() метод в настоящее время, чтобы разобрать дату в любой формат, который вы хотите, точно так же как:

m2.format('YYYY MMM DD ddd HH:mm:ss') // 2015 Apr 10 Fri 17:12:22 

Отъезд документы для more format tokens.

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