Рейтинг:0

как взять разницу во времени между двумя датами и временем

флаг ch

У меня есть журналы доступа с моего сервера. Мне нужно взять разницу во времени между двумя журналами. Мои журналы доступа имеют следующий формат времени: «14 апреля 2021 г. 06:25:09».

Чтобы взять разницу между двумя временными метками, я подумал преобразовать заданные временные метки в секунды с начала эпохи, а затем взять разницу.

Пример журнала доступа:

106.222.52.107 - - [14/Apr/2021:06:25:06 -0400] "POST URL1 HTTP/1.1" 204 4649 708 "Mozilla/5.0 (Linux; Android 11; V2037) AppleWebKit/537.36 (KHTML, как Gecko ) Chrome/83.0.4103.106 Mobile Safari/537.36"

157.34.255.192 - - [14/Apr/2021:06:25:08 -0400] "GET URL2 200 5309 1125" Mozilla/5.0 (Linux; Android 7.1.1; CPH1729 Build/N6F26Q) AppleWebKit/537.36 (KHTML, например Gecko) Chrome/61.0.3163.98 Mobile Safari/537.36"

1.38.48.202 - - [14/Apr/2021:06:25:10 -0400] "GET URL3 HTTP/1.1" 200 8692 64616 "Mozilla/5.0 (iPhone; процессор iPhone OS 14_4_2, как Mac OS X) AppleWebKit/605.1. 15 (KHTML, например Gecko) Версия/14.0.3 Mobile/15E148 Safari/604.1"

106.222.52.107 - - [14/Apr/2021:06:28:06 -0400] URL4 200 10506 1063 "Mozilla/5.0 (Linux; Android 11; V2037) AppleWebKit/537.36 (KHTML, как Gecko) Chrome/83.0.4103.106 Мобильное сафари / 537,36 дюйма

157.34.255.192 - - [14/Apr/2021:06:29:06 -0400] URL5 200 620 866 "Mozilla/5.0 (Linux; Android 7.1.1; CPH1729 Build/N6F26Q) AppleWebKit/537.36 (KHTML, как Gecko) Chrome/61.0.3163.98 Мобильный Safari/537,36"

Итак, я хочу преобразовать «14/Apr/2021:06:25:06» в секунды с начала эпохи.

Я использую команду даты для преобразования заданной отметки времени в секундах. Ниже приведена команда:

дата "+%s" -d="14/апр/2021 06:25:09"

Выдает следующую ошибку:

дата: неверная дата â=14/Apr/2021 06:25:09â

Но когда Я меняю местами день и месяц тогда работает нормально.

дата "+%s" -d "14.04.2021 06:25:09" Вывод: 1618399509

Имеет ли команда даты какой-то предопределенный формат? Изменить формат метки времени в журналах доступа сложно. Не могли бы вы предоставить решение для этого? Мне нужно написать сценарий оболочки, в котором мне нужно прочитать журналы доступа, и в зависимости от IP-адреса и отметки времени мне нужно создать еще один файл данных. Я использую Убунту 20.

флаг hr
Вы можете найти это полезным: [Заставить дату читать день/месяц/год] (https://unix.stackexchange.com/questions/296052/force-date-to-read-day-month-year)
guiverc avatar
флаг cn
Убунту 20? Нет такого релиза, так ты имеешь в виду Ubuntu Core 20? (Ubuntu использует *year.month* для продуктов на основе *deb* и формат *year* для продуктов *snap*)/ Это также может помочь, если вы *очистите* свой пост; что вы имеете в виду, начав с «*Закрыто. Этот вопрос требует подробностей или ясности. В настоящее время он не принимает ответы. Добавьте подробности и уточните проблему, которую вы решаете. Это поможет другим ответить на вопрос. Вы можете отредактировать вопрос или опубликовать новый.*" - да, это очень непонятно!
Jeff Schaller avatar
флаг ru
Вы захватили слишком много текста, когда копировали/вставляли из своего [закрытого вопроса SO] (https://stackoverflow.com/questions/68493819/convert-a-given-time-stamp-into-seconds); пожалуйста, постарайтесь, чтобы ваши вопросы были как можно более аккуратными и целенаправленными для каждого сообщества. Спасибо!

Ответить или комментировать

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