Перейти к содержанию
Содержание

Заказы попали в другой день: переведите время в часовой пояс отчёта

Суточное количество заказов может различаться, если один расчёт использует UTC, а другой локальное время. Сначала согласуйте часовой пояс и событие, по которому строится день: создание, отгрузка и доставка не взаимозаменяемы.

Сохраните точное исходное время

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

Заказы попали в другой день: переведите время в часовой пояс отчёта

По документации pandas, utc=True переводит время со смещением в UTC, а время без пояса трактует как UTC. Именно второе поведение требует проверки исходного формата.

Переведите момент, затем выделяйте день

Код ниже рассчитан на DataFrame df, где одна строка соответствует одному заказу, а created_at содержит согласованные ISO-строки. В примере выбран московский пояс; замените его на пояс своего отчёта.

import pandas as pd

raw = df["created_at"].astype("string")
has_offset = raw.str.contains(
    r"(?:Z|[+-]\d{2}:\d{2})$", regex=True, na=False
)
if not has_offset.all():
    raise ValueError("Проверьте отсутствующий часовой пояс")

utc_time = pd.to_datetime(raw, utc=True, errors="raise")
if utc_time.isna().any():
    raise ValueError("Время события отсутствует")
local_time = utc_time.dt.tz_convert("Europe/Moscow")
df["report_day"] = local_time.dt.date
orders_per_day = df.groupby("report_day").size()

tz_convert меняет представление момента в выбранном поясе. Не отрезайте дату от исходной строки до этого шага: исправить распределение по дням после такой потери времени уже нельзя без возврата к источнику.

Проверьте записи около полуночи

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

Сумма суточных количеств должна совпасть с числом принятых строк. Если файл содержит несколько позиций одного заказа, сначала задайте правило уникальности заказа: size() считает строки, а не распознаёт бизнес-объект автоматически.

Когда искать другую причину

Если пояс и событие совпадают, но отчёты различаются, проверьте границы выгрузки, дубли и отмены. Преобразование часового пояса не восстанавливает пропущенные строки. Сохраните исходные данные и полученный день, чтобы проверка была повторяемой.

Теги

Комментарии 0

0 / 1500

Популярные статьи