0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Как быстро определить или извлечь AM и PM из строки DateTime в Excel?

Работа с датой и временем в Python

Дата и время обрабатываются модулями datetime и time языка Python.

Модуль datetime

Модуль Datetime включает классы :

  • datetime.date
  • datetime.time
  • datetime.datetime
  • datetime.timedelta

Был добавлен еще один класс под названием tzinfo, который обрабатывает временные зоны.

Класс datetime.date

Класс datetime.date принимает три аргумента: год, месяц, день.

Мы увидим, какой сегодня день:

Класс datetime.datetime

Класс datetime.datetime принимает следующие аргументы: год, месяц, день, час, минуту, секунду, микросекунду.

Давайте посмотрим, который сейчас час:

Получение даты и времени отдельно от объекта datetime:

Классы datetime.date и datetime.datetime содержат метод strftime(), который позволяет генерировать строку, отображающую время в более дружественном для человека формате.

%aСокращенное название дня недели
%AПолное название дня недели
%bСокращенное название месяца
%BПолное название месяца
%cДата и время
%dДень месяца [01,31]
%H24-часовой формат часа [00,23]
%I12-часовой формат часа [01,12]
%jДень года. Цифровой формат [001,366]
%mНомер месяца. Цифровой формат [01,12]
%MМинута. Цифровой формат [00,59]
%pДо полудня или после (AM или PM)
%SСекунда. Цифровой формат [00,61]
%UНомер недели в году. Цифровой формат [00,53] (с воскресенья)
%wДень недели. Цифровой формат [0(воскресенье), 6]
%WНомер недели в году. Цифровой формат [00,53] (с понедельника)
%xДата
%XВремя
%yГод без века. Цифровой формат [00,99]
%YГод с веком. Цифровой формат
%ZВременная зона
%%Знак процента

Методы в классе Datetime:

  • Datetime.today() — объект datetime текущей даты и времени; работает так же, как datetime.now() с tz=None .
  • Datetime.now(tz=None) — объект datetime текущей даты и времени, местное время.
  • Datetime.utcnow() — объект datetime текущей даты и времени, GMT.
  • Datetime.fromtimestamp(timestamp) — дата стандартного представления времени.
  • Datetime.fromordinal(ordinal) — дата из числа, представляющего количество дней с 01.01.1970.
  • Datetime.combine(date, time) — объект datetime из комбинации объектов даты и времени.
  • Datetime.strptime(date_string, format) — преобразует строку в дату (аналогично функции strptime в модуле time).
  • Datetime.strftime(format) — преобразует объект datetime в строку в соответствии с форматом.
  • Datetime.date() — объект даты (с разбивкой по времени).
  • Datetime.time() — объект datetime (с усечением даты).
  • Datetime.replace([год[, месяц[, день[, час[, минута[, секунда[, микросекунда[, tzinfo]]]]]]]]) — возвращает новый объект datetime с измененными атрибутами.
  • Datetime.timetuple() — возвращает временную_структуру datetime.
  • Datetime.toordinal() — количество дней с 01.01.1970.
  • Datetime.timestamp() — возвращает время в секундах с начала эры Unix.
  • Datetime.weekday() — день недели в виде числа, понедельник — 0, воскресенье — 6.
  • Datetime.isoweekday() — день недели в виде числа, понедельник — 1, воскресенье — 7.
  • Datetime.isocalendar() — кортеж (год в формате ISO, номер недели ISO, день недели ISO).
  • Datetime.isoformat(sep=’T’) — красивая строка вида YYYYY-MM-DDTHH:MM:SS.mmmmmmmm или, если микросекунда == 0 , YYYYY-MM-DDTHH:MM:SS
  • Datetime.ctime() — возвращает строковое представление текущего местного времени.
Читайте так же:
Как вернуть значение в другой ячейке, если ячейка содержит определенный текст в Excel?

Класс datetime.timedelta

Класс datetime.timedelta позволяет выполнять операции над датами: сложение, вычитание, сравнение. Конструктор принимает аргументы с именами дней, недель, часов, минут, секунд, миллисекунд, микросекунд:

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

Преобразование строки в дату и время

Коротко и просто. У меня есть огромный список строк, похожих на дату:

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

Любая помощь (даже если это просто толчок в нужном направлении) будет оценена по достоинству.

Редактирование: это делается через Django ORM, так что я не могу использовать SQL для преобразования в вставку.

18 ответов

Datetime.strptime — это основная процедура для обработки строк в datetime. Он может работать со всеми видами форматов, формат которых определяется строкой формата, которую вы ему задаете:

Это самый маленький объект даты.

Документация Python для strptime : Python 2, Python 3

Документация Python для strptime строк strptime / strftime : Python 2, Python 3

Strftime.org — также отличная ссылка на strftime

  • Strptime = «время формата строки»
  • Strftime = «время формата строки»
  • Произнесите это вслух сегодня, и вам не придется проверять это снова через шесть месяцев.

Использование сторонней библиотеки dateutil:

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

Это очень полезно при написании тестов, где читаемость важнее производительности.

Вы можете установить его с помощью:

Пометьте strptime временем. Это инверсия strftime.

Читайте так же:
Как быстро вычислить квадратный корень значения в Excel?

Мой проект может преобразовывать некоторые аккуратные выражения. Проверьте временную строку.

Ниже приведены примеры:

Помните об этом, чтобы не запутаться в пересчете даты и времени.

Объект Строка после даты = strptime

Объект времени для других форматов = strftime

1 июня 2005 13:33

% b Месяц по сокращенному имени локали (июнь)

День месяца, выраженный десятичным числом без поля (1)

2015 процент Y год со столетним периодом в виде десятичного числа

% I Время (12-часовые часы) в десятичном виде с нулевой задержкой (01)

Число с нулевым полем, равное %М Минута (33)

P локальную эквивалентность AM или PM (PM).

Поэтому вы должны преобразовать i-e strptime в строку в

Что, если у вас есть другой формат даты, который можно использовать с помощью panda или dateutil.parse

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

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

Ниже описаны два способа преобразования дат в виде строк в объекты datetime.date с помощью Pandas.

Задержка

А вот как конвертировать оригинальные даты ОП:

Чтобы преобразовать строки в метки времени Pandas, используйте to_datetime. Смотрите документацию, если вам нужно что-то особенное.

Аналогично, временные метки имеют много свойств и методов, доступных в дополнение к .date.

Пример события даты-времени, связанного с временной зоной Django.

Использование USE_TZ = True для Django или Python сделает эту конвертацию очень важной:

Моим личным любимым решением является первый ответ, который представляет собой модуль парсера, устраняющий необходимость создания строковых литералов для решения проблемы. Хотя, один из недостатков этого ответа заключается в том, что он на 90% медленнее, чем принятый ответ с использованием strptime.

Читайте так же:
Как в Excel показать процент на круговой диаграмме?

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

Для получения дат и преобразования форматов дат полезно использовать модуль Python datetime.

Создайте небольшую справочную функцию, например.

Он весьма универсален:

  • Если вы не указываете никаких аргументов, возвращается сегодняшняя дата.
  • Существует формат даты по умолчанию, который можно изменить.
  • Вы можете легко изменить его, чтобы вернуть дату и время.

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

Дополнительную информацию см. на сайте Http://arrow.readthedocs.io/en/latest/.

Для упрощения этой задачи можно использовать easy_date:

Если вам нужен только формат даты, вы можете вручную преобразовать его, например, передав отдельные поля:

Если у вас есть общие строковые значения, вы можете передать их в тип date, например:

Вы получите общее значение в формате даты.

Это будет полезно для преобразования строки в дату и время, а также с учетом часового пояса

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

Нам нужно попытаться перехватить несколько форматов времени даты fmt1, fmt2, fmtn и подавить/обработать исключения (из strptime() ) для всех несовместимых (и, в частности, избежать использования дурацких предложений try.catch с отступами в n глубин). Из моего решения.

голоса
Рейтинг статьи
Читайте так же:
Как быстро транспонировать диапазоны и пропускать пустые ячейки в Excel?
Ссылка на основную публикацию
Adblock
detector