СотоГид СотоГид

Знаешь ответ или есть вопрос? Зарабатывай на этом! Зарегистрируйся и получи 45 ₽ прямо сейчас.

Конвертация даты в Timestamp и обратно
на PHP, SQL, MySQL, PostgreSQL, JS, Java, Python
(Timestamp To Date Converter)

Timestamp (unix timestamp) – это "временной штамп" или абсолютное время – количество секунд, прошедших с начала эпохи Unix, то есть с 1 января 1970 года. Такой штамп удобно использовать, чтобы хранить дату и время в числовой переменной целого типа. На этой странице вы можете перевести любую дату в Timestamp и временной штамп в дату.



Перевести Timestamp в дату

Перевести дату в Timestamp



Как работает наш сервис Timestamp Converter

Timestamp Converter – это сервис для перевода Timestamp в челочеческую дату и время, а человеческую дату и время обратно в Timestamp. На этой странице собрана вся необходимая информация по этой конвертации, а выше представлен сам конвертер. У сервиса два вида ссылок:

  • https://sotoguide.ru/calc/timestamp – основная "домашняя" ссылка
  • Если к основной ссылке добавить слеш и значение Timestamp (например, https://sotoguide.ru/calc/timestamp/1611814140), то откроется страница для конкретного временного штампа. Такую ссылку вы можете отправить коллегам или вставить на свой сайт – по ней всегда будет доступна информация о нужном таймштампе.

Timestamp и обычное человеческое время

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

  1. Разные множители при переходе от одного временного интервала к другому. С числами проще: в тысяче – 1000 единиц, в миллионе 1000 тысяч, в миллиарде 1000 миллионов – везде коэффициент 1000. Однако в сутках 24 часа, в часе 60 минут, в году 12 месяцев – коэффициенты всегда разные
  2. В разных месяцах разное количество дней, причем в феврале может быть 28 или 29 дней.
  3. Разные народности по-разному записывают одну и ту же дату и время.

Всё это очень усложняет хранение и расчет даты и времени. Сколько минут между 5 апреля и 10 октября? Какой промежуток короче, между 12:55 10 августа и 13:32 5 января или между 16:00 30 декабря и 23:12 25 апреля? Пользуясь человеческой системой летоисчисления на эти вопросы трудно дать быстрые ответы. Не менее трудно было бы создавать сайты и программы, работая с таким количеством переменных – годы, месяцы, секунды, часы.

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

  1. Timestamp (иногда называют datetime) – это целое число, выражающее количество секунд, прошедших с 1 января 1970 года до заданной даты. Например, 1 января 2021 года имеет Timestamp 1609448400, а 10 апреля 2021 года – Timestamp 1618002000. Да, числа большие, по 10 цифр каждое. Но работать (складывать и вычитать) целые числа гораздо проще, чем высчитывать месяцы и дни. Так, разница между этими числами равна 8553600 – это количество секунд между указанными датами. Делим на 60, ещё раз на 60 и на 24 – получим 99 – количество дней между ними.
  2. ISO 8601 – международный стандарт "Data elements and interchange formats — Information interchange — Representation of dates and times" написания даты и времени вида (Российский аналог ГОСТ ИСО 8601-2001). Первая редакция была выпущена в 1988 году, вторая – в 2000 году, третья – в 2004. Сегодня действует четвертая редакция (2019 г.). Стандарт предполагает более десятка схожих вариантов написания даты и времени, основной из которых является запись вида "2021-01-22T16:48:43+03:00", что означает 22 января 2021 года, 16 часов 48 минут 43 секунды в часовом поясе +3 часа по Гринвичу.
  3. RFC 2822 – стандарт, который предусматривает запись даты и времени как "Tue, 05 Jan 2021 14:12:32 +0300", что означает вторник, 5 января 2021 года, 14 часов 12 минут 32 секунды в часовом поясе +3 часа по Гринвичу.

Как узнать Timestamp в PHP, SQL, MySQL, PostgreSQL, JS, Java, Python

Функции для нахождения Timestamp (datetime) предусмотрены во всех языках программирования. Но следует помнить, что в некоторых из них (например, в JavaScript и Java) штамп выводится в миллисекундах, а не в секундах. Это более точная цифра, но для получения секунд её надо делить на 1000 и, при необходимости, округлять.

Timestamp настоящего момента времени (текущий Timestamp)

PHPtime();
MySQLUNIX_TIMESTAMP()
JavaScriptnew Date().getTime()/1000;
Javalong ts = System.currentTimeMillis()/1000;
Pythonimport time;time.time()

Timestamp для заданной даты и времени

Timestamp можно получить и из привычной нам строковой записи даты и времени. Здесь важно обратить внимание на порядок дней и месяцев: ГГГГ-ММ-ДД, но ММ.ДД.ГГГГ.

В качестве примера взят текущий Timestamp 1611814140 (2021-01-28 09:09:00)

PHP strtotime("2021-01-28 09:09:00"); mktime ($hour, $minute, $second, $month, $day, $year);

// Каждый следующий аргумент в mktime не обязателен и по умолчанию равен текущему значению даты и времени. Обратите внимание на порядок параметров, особенно месяц, день, год.

MySQLUNIX_TIMESTAMP('2021-01-28 09:09:00');
JavaScriptDate.parse("2021-01-28 09:09:00")/1000;
Javaimport java.text.SimpleDateFormat;SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss")long ts = dateFormat.parse(2021-01-28 09:09:00).getTime()/1000;
Pythonimport timeint(time.mktime(time.strptime("2021-01-28 09:09:00"))) - time.timezone

Как перевести Timestamp в нормальную дату и время

В качестве примера взят текущий Timestamp 1611814140 (2021-01-28 09:09:00)

Обратная задача – перевести Timestamp (datetime) в нормальную дату и время, причем в нужный вид. Встроенные функции позволяют это сделать, но шаблон (маска) для получения строки нужного вида есть только в PHP и MySQL. Функционал JavaScript для работы с датами несколько слаб: компоненты надо извлекать и обрабатывать вручную.

PHPdate("Y-m-d H:i:s", 1611814140);
MySQLFROM_UNIXTIME(1611814140, '%Y-%m-%d %h:%i:%s')
JavaScript var date = new Date(1611814140000);

// Обратите внимание на три нуля на конце. Timestamp умножен на 1000, чтобы получить миллисекунды.

alert(date.getFullYear()+'-'+(date.getMonth()+1)+'-'+date.getDate()+' '+date.getHours()+':'+date.getMinutes()+':'+date.getSeconds()+'.'+date.getMilliseconds());

// Обратите внимание на "+1" при получении месяца, т.к. по умолчанию они нумеруются от 0 до 11. Ещё одна потенциальная проблема – все значения выводятся без ведущего нуля.

Как вы заметили, чтобы получить дату и время в нужном формате используется маска (шаблон), в которой вполне понятными символами указывается порядок и формат компонентов даты и времени. Все остальные символы в маске выводятся без изменений. Ниже приведена таблица символов для указания компонентов даты и времени:

ГруппаОписаниеСимволы в MySQLСимволы в PHPМетоды JavaScriptЗначение для Timestamp 1611814140
ГодыПорядковый номер года, 4 цифры, например, 1999 или 2021%YYgetFullYear()2021
Порядковый номер года, последние 2 цифры, например, 99 или 21%yy21
МесяцыПорядковый номер месяца с ведущими нулями (от 01 до 12)%mm01
Порядковый номер месяца без ведущих нулей (от 1 до 12)%cngetMonth()+1

Выдает от 0 до 11, поэтому прибавляем 1

1
Полное наименование месяца, например January или March%MFJanuary
Сокращенное наименование месяца, 3 символа, от Jan до Dec%bMJan
ДниДень месяца, 2 цифры с ведущими нулями (от 01 до 31)%dd28
День месяца без ведущих нулей (от 1 до 31)%ejgetDate()28
День месяца с английским суффиксом (1st, 2nd, 3rd и т.д.)%D28th
Английский суффикс порядкового числительного дня месяца, 2 символа (st, nd, rd или th). Применяется совместно с jSth
Порядковый номер дня в году (от 1 до 366)%j28
Порядковый номер дня в году (от 0 до 365)z27
Количество дней в месяце (от 28 до 31)t31
Дни неделиСокращенное наименование дня недели, 3 символа, от Mon до Sun%aDThu
Полное наименование дня недели от Sunday до Saturday%Wl

(строчная L)

Thursday
Порядковый номер дня недели от 0 (воскременье) до 6 (суббота)%wwgetDay()4
ЧасыЧасы в 24-часовом формате с ведущими нулями (от 00 до 23)%HH09
Часы в 24-часовом формате без ведущих нулей (от 0 до 23)%kGgetHours()9
Часы в 12-часовом формате с ведущими нулями (от 01 до 12)%h или %I

(заглавная i)

h09
Часы в 12-часовом формате без ведущих нулей (от 1 до 12)%l

(строчная L)

g9
МинутыМинуты с ведущими нулями от 00 до 59%iigetMinutes()

Без ведущих нулей

09
СекундыСекунды с ведущими нулями от 00 до 59%s %SsgetSeconds()

Без ведущих нулей

00
МиллисекундыМиллисекунды от 0 до 999getMilliseconds()0
До и после полудняAM или PM в верхнем регистре%pAAM
am или pm в нижнем регистреaam
Часовой поясЧасовой пояс в часах (разница с временем по Гринвичу в часах). Например, +2000. OgetTimezoneOffset()/60

Выдает минуты, поэтому делим на 60

+0300
Часовой пояс в секундах от -43200 до 43200 (смещение временной зоны в секундах). На западе от UTC отрицательный, на востоке положительныйZ10800
Временная зона на сервере, например, EST, MDT и т.д.TMSK
Номер недели в годуПорядковый номер недели в году, где первый день недели – воскресенье, от 00 до 53%U
Порядковый номер недели в году по ISO-8601, где первый день недели – понедельник, от 00 до 53%uW04
Порядковый номер недели в году, где первый день недели – воскресенье, от 01 до 53. Используется с `%X'%V
Порядковый номер недели в году, где первый день недели – понедельник, от 01 до 53. Используется с `%x'%v
Год для недели, где воскресенье считается первым днем недели, число, 4 разряда. Используется с '%V'%X
Год для недели, где воскресенье считается первым днем недели, число, 4 разряда. Используется с '%v'%x
Другие функцииВремя в стадарте Swatch Internet, от 000 до 999B297
Дата в формате ISO 8601, например, 2021-02-12T14:10:51+00:00c2021-01-28T
09:09:00+03:00
Дата в формате RFC 2822, например, Thu, 14 Jan 2021 12:51:37 +0200rThu, 28 Jan 2021 09:09:00 +0300
Признак летнего времени. 1, если дата соответствует летнему времени, иначе 0I

(заглавная i)

0
Признак високосного года. 1, если год високосный, иначе 0.L0
Время, 12-часовой формат (hh:mm:ss AM или PM)%r09:09:00 AM
Время, 24-часовой формат (hh:mm:ss)%T09:09:00
TimestampКоличество секунд, прошедших с начала Эпохи Unix (The Unix Epoch, 1 января 1970, 00:00:00 GMT), аналог функции time()UNIX_TIMESTAMP()UgetTime()/1000

Выдает миллисекунды, поэтому делим на 1000

1611814140
ЭкранированиеЭкранирование определителей%\, а лучше \\

Некоторые важные вехи

Сегодня и в обозримом будущем Timestamp – это 10-значное число, начинающееся с цифр 1 и 6 (т.е. с 1970 года прошло 1,6 миллиарда секунд). Цифра 6 сменится на 7 в конце 2023 года, а 1 на 2 – в середине 2033 года. 11-значным Timestamp станет только в 2286 году.

Веха TimestampДата
1 000 000 0002001-09-09 05:46:40
1 600 000 0002020-09-13 15:26:40
1 611 814 140

Сейчас

2021-01-28 09:09:00
1 700 000 0002023-11-15 01:13:20
2 000 000 0002033-05-18 06:33:20

При работе с Timestamp бывает полезно знать, сколько секунд в часе, в сутках, в году. Эти данные указаны в следующей таблице:

Период времениКоличество секунд
в Timestamp
1 минута60
1 час3 600
1 день86 400
1 неделя604 800
1 месяц28 дней2 419 200
31 день2 678 400
1 год365 дней31 536 000
366 дней31 622 400

И последнее – сколько примерно лет, дней и часов в тысячах и миллионах секунд. Зная эти цифры можно быстро оценить разницу между двумя временными штампами:

Количество секунд
в Timestamp
Период времени
ТочноПримерно
1 000 сек.16 мин. 40 сек.16,67 мин.1/3 часа
10 000 сек.3 ч. 46 мин. 40 сек.2,67 часа3 часа
100 000 сек.1 дн. 3 ч. 46 мин. 40 сек.1,16 дня1 день
1 000 000 сек.11 дн. 13 ч. 46 мин. 40 сек.11,57 дней10 дней
10 000 000 сек.115 дн. 17 ч. 46 мин. 40 сек.115,7 дней1/3 года
100 000 000 сек.3 года 62 дн. 9 ч. 46 мин. 40 сек.3,17 лет3 года
1 000 000 000 сек.31 год 259 дн. 1 ч. 46 мин. 40 сек.31,7 лет30 лет