Перейти к содержимому

Даты Excel

Вместо даты в ячейке 45921? Или даты в двух книгах расходятся на четыре года? Здесь число читается обоими способами.

Работает в вашем браузере. Всё, что вы сюда вставляете или бросаете, никуда не загружается.

Дробная часть — время суток. Стрелки сдвигают на день, Shift+стрелки — на 30 дней.

Попробуйте
2025-09-21
Одно значение в системах дат 1900 и 1904
система 1900Windows, Mac с 2011система 1904Mac 2008 и старше
число4592145921
датавс, 21 сентября 2025 г.сб, 22 сентября 2029 г.
время00:00:0000:00:00
ISO 86012025-09-21T00:00:002029-09-22T00:00:00
Unix, секунды17584128001884729600
Unix, мс17584128000001884729600000
формула=DATE(2025,9,21)=DATE(2029,9,22)
C − B = 1462 дн. · 4 года + 1 день

Одно число, две даты, между ними 1462 дня. Если даты прыгают на четыре года и день между книгой с Mac и книгой с Windows, вот почему.

Часовых поясов в Excel нет: ISO 8601 и Unix-время считают значение ячейки временем по UTC.

Как пользоваться

5 шагов
  1. Введите число из ячейки в режиме Число → дата. Дробная часть — это время суток: 45921.75 — 21 сентября 2025, 18:00.
  2. Смотрите обе колонки. B — система 1900 (Windows и Mac с 2011 года), C — старая маковская система 1904.
  3. Чтобы получить число из даты, выберите или введите её в режиме Дата → число. Для 03/04/2025 укажите, что идёт первым: день или месяц.
  4. Щёлкните по любой ячейке — её значение появится в строке fx, оттуда его можно скопировать.
  5. Целая колонка из CSV? Откройте Вставить колонку и скопируйте результат обратно одной колонкой или как TSV.

Что он делает

1 мин чтения

Excel хранит дату как количество дней от начала своей эпохи, а время — как долю дня. В системе 1900 по умолчанию 1 — это 1 января 1900, а 45921 — 21 сентября 2025. Превращает число в дату только формат ячейки, поэтому когда формат теряется (экспорт в CSV, импорт в базу, библиотека, которая игнорирует стили), вы видите голое число.

У системы 1900 есть знаменитый баг. Число 60 — это 29 февраля 1900, дня, которого не было: Lotus 1-2-3 считал 1900 год високосным, и Excel скопировал это нарочно. Поэтому Google Таблицы, pandas и почти любой код считают от 30 декабря 1899: их числа совпадают с Excel начиная с 1 марта 1900 и отстают на день до этой даты. Число 0 Excel честно показывает как «0 января 1900».

Система 1904 начинается с 0 = 1 января 1904. Её по умолчанию использовал Excel 2008 для Mac и более старые версии, и любую книгу до сих пор можно на неё переключить. Одно и то же число в 1904 даёт дату на 1462 дня позже, чем в 1900: четыре года и один день. Именно этот сдвиг появляется, когда даты переезжают между файлом с Mac и файлом с Windows. Как это укусило меня, я описал в посте про рассинхрон дат Excel и ошибку на единицу.

Часовых поясов в Excel нет, поэтому ISO 8601 и Unix-время здесь считают значение ячейки временем по UTC. Диапазон Excel заканчивается 31 декабря 9999: это 2958465 в системе 1900 и 2957003 в 1904. Всё, что дальше или меньше нуля, — ########.

Вопросы

5 вопросов

Почему Excel показывает 45921 вместо даты?

Потому что у ячейки пропал формат даты, и вы видите хранимое число: 45921 день от начала эпохи, то есть 21 сентября 2025. Выделите колонку и поставьте формат «Дата» (Ctrl+1, на Mac ⌘+1). В CSV, кроме числа, ничего нет, так что переводите его здесь или в коде.

Почему даты сдвинулись на 4 года и 1 день?

Одна книга использует систему дат 1904, а другая — 1900, поэтому одно и то же число означает две даты с разницей в 1462 дня. Проверьте Файл → Параметры → Дополнительно → Использовать систему дат 1904 (на Mac: Excel → Настройки → Вычисление). Чтобы исправить скопированные значения, впишите 1462 в свободную ячейку, скопируйте её и примените к датам Специальная вставка → Сложить (из 1904 в 1900) или Вычесть (из 1900 в 1904).

Как перевести дату Excel в Python или JavaScript?

Считайте дни от 30 декабря 1899. В pandas: pd.to_datetime(df["date"], unit="D", origin="1899-12-30"). В JavaScript: new Date((serial - 25569) * 86400000) и читайте UTC-методами, ведь 25569 — это 1 января 1970. Оба способа верны для всего после 28 февраля 1900. Для книги в системе 1904 возьмите origin="1904-01-01" или сначала прибавьте 1462. Google Таблицы используют ту же эпоху 30 декабря 1899.

Как превратить Unix-время в дату Excel?

Разделите секунды на 86400 и прибавьте 25569: =A1/86400+25569, затем поставьте ячейке формат даты. Для миллисекунд делите на 86400000. Результат будет в UTC. Чтобы получить местное время, прибавьте смещение в часах, делённое на 24, например +3/24.

Как превратить текст, похожий на дату, в настоящую дату Excel?

Если значение прижато к левому краю ячейки и смена формата ничего не меняет, это текст. =ДАТАЗНАЧ(A1) (в английском Excel DATEVALUE) превращает его в число, после чего поставьте ячейке формат даты. ДАТАЗНАЧ читает текст в порядке дат вашей системы, поэтому 03/04/2025 в Европе — 3 апреля, а в США — 4 марта. Для целой колонки: Данные → Текст по столбцам, дважды «Далее», выберите Дата и порядок, в котором записан текст (например, ДМГ: день, месяц, год).

Ещё инструменты на стене