2015-06-04 14 views
1

У меня есть .json файла с большим количеством документов, каждый документ, как это:Преобразование Epoch метки времени формата дата

{"_id":{"$oid":"54ff56116d"},"caption":{"created_time":"1421434541",....} 

Мне нужно преобразовать created_time формат дату в каждом из моих документов.

У вас есть идея?

ответ

0

Поскольку у вас есть 10-значные числа в качестве созданного времени, вы, вероятно, используете «временные метки Unix», которые отсчитывают секунды со времен «Эпохи», который находится с 1970-01-01 00:00:00 +00: 00 (полночь утром 1 января 1970 года в часовой пояс или часовой пояс GMT). Если бы у вас было 13-значное число, это, вероятно, было бы миллисекундами с The Epoch, используемым на Java. Существуют и другие системы, но это правдоподобное предположение.

Существует множество систем функций, которые преобразуют такие значения в даты. У меня есть программа C, используя стандартные функции библиотеки, которые я использовал для подтверждения даты:

$ timestamp 1421434541 
1421434541 = Fri Jan 16 10:55:41 2015 
$ timestamp -u 1421434541 
1421434541 = Fri Jan 16 18:55:41 2015 
$ timestamp -T '%Y-%m-%d %H:%M:%S' -u 1421434541 
1421434541 = 2015-01-16 18:55:41 
$ 

(местный часовой пояс:. США/Тихоокеанский регион, известный как Америка/Los_Angeles)

Программа использует strtol() для преобразуйте число в строку в long и затем используйте localtime() или gmtime(), чтобы разбить это на struct tm, а затем использует strftime() для форматирования результата.

Команда GNU date может использоваться, чтобы сделать этот материал тоже:

$ /usr/gnu/bin/date -d @1421434541 +'%Y-%m-%d %H:%M:%S' 
2015-01-16 10:55:41 
$ 

Поскольку вы не определили язык хозяина, это не представляется возможным, чтобы сказать вам, что использовать. В значительной степени гарантируется, что любой язык, который вы выберете, будет доступен для обработки кода.

+0

Спасибо, у меня нет определенного языка хоста, но моя ОС - это Linux. Мой главный вопрос: как это сделать для 100000 строк? Я не могу сделать это один за другим, – sinaei

+0

Как вы можете избежать этого один за другим? Вы должны прочитать 100 000 строк (или одну строку со 100 000 записей) и обрабатывать каждый из них, как вы его находите, или после того, как вы его нашли, с вашей библиотекой JSON. Вы ничего не указали в отношении языков, которые вы используете, поэтому вам очень сложно помочь. GNU 'date' имеет дело с одной датой/временем за раз. Моя «временная метка» может принимать столько строк, сколько вы ее передадите, - ваш O/S, вероятно, остановит ее, обрабатывая их все сразу, но вы можете сделать много тысяч в одном вызове. Вам понадобится больше информации, чем время ... но вы ничего не сказали. –

+0

Спасибо за ваш ответ! это помогло мне – sinaei

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