Преобразовать время unix. UNIX-время. Как получить Unix время в
Само время записывается в прошедших секундах от начала эры Unix (англ. Unix Epoch), которая началась в полночь (по UTC) с 31 декабря 1969 года на 1 января 1970г. Время Unix согласуется с UTC, в частности, при объявлении висококосных секунд UTC - соответствующие номера секунд повторяются.
Этот способ хранения поддерживается многими системами и является очень удобным, к примеру, сравнение дат происходит с точностью до секунды, а хранение является компактным и легко преобразуется в любой удобочитаемый формат. Конечно, существуют и недостатки, к примеру при частом обращении к элементам даты, вроде номера месяца и т.п. Однако, в большинстве случаев эффективность достигается за счёт хранения даты в виде одной величины, вместо набора полей.
Получение UnixTime в разной среде "обитания":
Perl | time |
PHP | time() |
Ruby | Time.now (или Time.new). Чтобы вывести: Time.now.to_i |
Python | import time сначала, потом time.time() |
Java | long epoch = System.currentTimeMillis()/1000; |
Microsoft .NET C# | epoch = (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000; |
VBScript/ASP | DateDiff("s", "01/01/1970 00:00:00", Now()) |
Erlang | calendar:datetime_to_gregorian_seconds(calendar:now_to_universal_time(now()))-719528*24*3600. |
MySQL | SELECT unix_timestamp(now()) |
PostgreSQL | SELECT extract(epoch FROM now()); |
SQL Server | SELECT DATEDIFF(s, "1970-01-01 00:00:00", GETUTCDATE()) |
JavaScript | Math.round(new Date().getTime()/1000.0) getTime() возвращает время в миллисекундах. |
Unix/Linux | date +%s |
Другие OS | Командная строка: perl -e "print time" (Если Perl установлен на вашей системе) |
Как конвертировать обычную дату в UnixTime?
PHP | mktime(часы , минуты , секунды , месяц , день , год ) |
Ruby | Time.local(год , месяц , день , часы , минуты , секунды , usec ) (или Time.gm для GMT/UTC вывода). Чтобы вывести добавьте.to_i |
Python | import time сначала, потом int(time.mktime(time.strptime("2000-01-01 12:34:00", "%Y-%m-%d %H:%M:%S"))) |
Java | long epoch = new java.text.SimpleDateFormat ("dd/MM/yyyy HH:mm:ss").parse("01/01/1970 01:00:00"); |
VBScript/ASP | DateDiff("s", "01/01/1970 00:00:00", поле даты ) |
MySQL | SELECT unix_timestamp(время ) Формат времени: YYYY-MM-DD HH:MM:SS или YYMMDD или YYYYMMDD |
PostgreSQL | SELECT extract(epoch FROM date("2000-01-01 12:34")); С timestamp: SELECT EXTRACT(EPOCH FROM TIMESTAMP WITH TIME ZONE "2001-02-16 20:38:40-08");C интервалом: SELECT EXTRACT(EPOCH FROM INTERVAL "5 days 3 hours"); |
SQL Server | SELECT DATEDIFF(s, "1970-01-01 00:00:00", поле с датой ) |
Unix/Linux | date +%s -d"Jan 1, 1980 00:00:01" |
Конвертируем обратно, UnixTime секунды в понятную, человекочитаемую дату:
PHP | date(Формат , unix время ); |
Ruby | Time.at(unix время ) |
Python | import time сначала, потом time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.localtime(unix время )) Замените time.localtime на time.gmtime для GMT даты. |
Java | String date = new java.text.SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(new java.util.Date (unix время *1000)); |
VBScript/ASP | DateAdd("s", unix время , "01/01/1970 00:00:00") |
PostgreSQL | SELECT TIMESTAMP WITH TIME ZONE "epoch" + unix время * INTERVAL "1 second"; |
MySQL | from_unixtime(unix время , не обязательно, выходной формат ) Стандартный формат выхода YYY-MM-DD HH:MM:SS |
SQL Server | DATEADD(s, unix время , "1970-01-01 00:00:00") |
Microsoft Excel | =(A1 / 86400) + 25569Результат будет в GMT зоне времени. Для других временных зон: =((A1 +/- разница аремени для зоны) / 86400) + 25569. |
Linux | date -d @1190000000 |
Другие OS | Командная строка: perl -e "print scalar(localtime(unix время ))" (Если установлен Perl) Замените "localtime" на "gmtime" для GMT/UTC зоны времени. |
По большей части информация стащена с:
Что такое Unix время или Unix эпоха (Unix epoch или Unix time или POSIX time или Unix timestamp) ?
UNIX-время или POSIX-время (англ. Unix time) - способ кодирования времени, принятый в UNIX и других POSIX-совместимых операционных системах.
Моментом начала отсчёта считается полночь (по UTC) с 31 декабря 1969 года на 1 января 1970, время с этого момента называют "эрой UNIX" (англ. Unix Epoch).
Время UNIX согласуется с UTC, в частности, при объявлении високосных секунд UTC соответствующие номера секунд повторяются.
Способ хранения времени в виде количества секунд очень удобно использовать при сравнении дат (с точностью до секунды), а также для хранения дат: при необходимости их можно преобразовать в любой удобочитаемый формат. Дата и время в этом формате также занимают очень мало места (4 или 8 байтов, в зависимости от размера машинного слова), поэтому его разумно использовать для хранения больших объёмов дат. Недостатки в производительности могут проявиться при очень частом обращении к элементам даты, вроде номера месяца и т. п. Но в большинстве случаев эффективнее хранить время в виде одной величины, а не набора полей.
Конвертивание эпохи Unix в человекопонятную дату(human readable date)
Unix дата начала и конца года, месяца или дня
Перевод секунд в дни, часы и минуты
Как получить Unix время в...
Perl | time |
PHP | time() |
Ruby | Time.now (или Time.new). Чтобы вывести: Time.now.to_i |
Python | import time сначала, потом time.time() |
Java | long epoch = System.currentTimeMillis()/1000; |
Microsoft .NET C# | epoch = (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000; |
VBScript/ASP | DateDiff("s", "01/01/1970 00:00:00", Now()) |
Erlang | calendar:datetime_to_gregorian_seconds(calendar:now_to_universal_time(now()))-719528*24*3600. |
MySQL | SELECT unix_timestamp(now()) |
PostgreSQL | SELECT extract(epoch FROM now()); |
SQL Server | SELECT DATEDIFF(s, "1970-01-01 00:00:00", GETUTCDATE()) |
JavaScript | Math.round(new Date().getTime()/1000.0) getTime() возвращает время в миллисекундах. |
Unix/Linux | date +%s |
Другие OS | Командная строка: perl -e "print time" (Если Perl установлен на вашей системе) |
Конвертирование даты в Unix время в...
PHP | mktime(часы , минуты , секунды , месяц , день , год ) |
Ruby | Time.local(год , месяц , день , часы , минуты , секунды , usec ) (или Time.gm для GMT/UTC вывода). Чтобы вывести добавьте.to_i |
Python | import time сначала, потом int(time.mktime(time.strptime("2000-01-01 12:34:00", "%Y-%m-%d %H:%M:%S"))) |
Java | long epoch = new java.text.SimpleDateFormat ("dd/MM/yyyy HH:mm:ss").parse("01/01/1970 01:00:00"); |
VBScript/ASP | DateDiff("s", "01/01/1970 00:00:00", поле даты ) |
MySQL | SELECT unix_timestamp(время ) Формат времени: YYYY-MM-DD HH:MM:SS или YYMMDD или YYYYMMDD |
PostgreSQL | SELECT extract(epoch FROM date("2000-01-01 12:34")); С timestamp: SELECT EXTRACT(EPOCH FROM TIMESTAMP WITH TIME ZONE "2001-02-16 20:38:40-08"); C интервалом: SELECT EXTRACT(EPOCH FROM INTERVAL "5 days 3 hours"); |
SQL Server | SELECT DATEDIFF(s, "1970-01-01 00:00:00", поле с датой ) |
Unix/Linux | date +%s -d"Jan 1, 1980 00:00:01" |
Конвертирование Unix времеми в понятную дату(human readable date)...
PHP | date(Формат , unix время ); |
Ruby | Time.at(unix время ) |
Python | import time сначала, потом time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.localtime(unix время )) Замените time.localtime на time.gmtime для GMT даты. |
Java | String date = new java.text.SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(new java.util.Date (unix время *1000)); |
VBScript/ASP | DateAdd("s", unix время , "01/01/1970 00:00:00") |
PostgreSQL | SELECT TIMESTAMP WITH TIME ZONE "epoch" + unix время * INTERVAL "1 second"; |
MySQL | from_unixtime(unix время , не обязательно, выходной формат ) Стандартный формат выхода YYY-MM-DD HH:MM:SS |
SQL Server | DATEADD(s, unix время , "1970-01-01 00:00:00") |
Microsoft Excel | =(A1 / 86400) + 25569 Результат будет в GMT зоне времени. Для других временных зон: =((A1 +/- разница аремени для зоны) / 86400) + 25569. |
Linux | date -d @1190000000 |
Другие OS | Командная строка: perl -e "print scalar(localtime(unix время ))" (Если установлен Perl) Замените "localtime" на "gmtime" для GMT/UTC зоны времени. |
Для чего нужен инструмент "Unixtime конвертер"?
Данный инструмент, в первую очередь, будет полезен веб-мастерам, которые постоянно имеют дело с большими объемами дат или часто в своей работе обращаются к их элементам. С помощью инструмента "Unixtime конвертер" можно легко конвертировать Unix время в понятную для пользователя дату (и наоборот), узнать текущее Unix epoch время, а также получить Unix время в различных языках программирования, СУБД и операционных системах.
Что такое Unix время?
Эра Unix (Unix epoch) началась в ночь с 31 декабря 1969 года на 1 января 1970 года. Именно эту дату взяли за точку отсчета "компьютерного" времени, которое исчисляется в секундах и занимает очень мало места на диске – всего 4 или 8 байт. С помощью такого способа кодирования программисты могут "спрятать" любую дату в одно число, и легко конвертировать его обратно в понятный пользователям формат.
Unix время (еще его называют Unix time или POSIX time) удобно использовать в различных операционных системах и языках программирования, так как оно отображается в виде одной величины, а не определенного количества полей, занимающих место. К тому же, UNIX time полностью соответствует стандарту UTC (в том числе и в високосных годах) – в таком случае соответствующие значения секунд просто повторяются.
Терминология Unix
Пару слов о терминах.
Итак, Unix-временем (или POSIX-временем) считается количество секунд, которые прошли с полуночи 1 января 1970 года до настоящего времени.
Unix Timestamp (временная метка) – это "зафиксированное" время, иными словами – конкретная дата, запечатленная в числе.
UTC (Universal Coordinated Time) – это Всемирное координированное время, которое "фиксируется" на нулевом меридиане, и от которого ведется отсчет географических часовых поясов.
Насколько "долговечна" данная система?
Всего лишь через пару десятков лет, а именно 19 января 2038 года в 03:14:08 по UTC Unix time достигнет значения 2147483648, и компьютерные системы могут интерпретировать это число как отрицательное. Ключ к решению данной проблемы лежит в использовании 64-битной (вместо 32-битной) переменной для хранения времени. В таком случае, запаса числовых значений Unix time хватит человечеству еще на 292 миллиарда лет. Неплохо, правда?
Unix время – одно для всех
Если вы живете в Лондоне или Сан-Франциско, а ваши друзья – в Москве, то "сверить часы" можно по Unix time: эта система в данный момент времени едина для всего мира. Естественно, если время на серверах выставлено правильно. А с помощью инструмента "Unixtime конвертер" такая конвертация займет у вас доли секунды.
Т.к. встроенные средства в солярке отсутствуют, создаем следующий скрипт: #!/bin/sh truss date 2>&1 |grep ^time |awk "{print $3;}" exit $? или nawk "BEGIN{print srand()}" либо на перле: perl -e "print time, "\n";" узнать дату модификации файла: truss -v lstat -t lstat ls -l file.txt 2>&1 1>/dev/null | grep "mt\ =\ " | awk "{print $9;}"
Как получить Unix время в...
Perl | time |
PHP | time() |
Ruby | Time.now (или Time.new). Чтобы вывести: Time.now.to_i |
Python | import time сначала, потом time.time() |
Java | long epoch = System.currentTimeMillis()/1000; |
Microsoft .NET C# | epoch = (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000; |
VBScript/ASP | DateDiff("s", "01/01/1970 00:00:00", Now()) |
Erlang | calendar:datetime_to_gregorian_seconds(calendar:now_to_universal_time(now()))-719528*24*3600. |
MySQL | SELECT unix_timestamp(now()) |
PostgreSQL | SELECT extract(epoch FROM now()); |
SQL Server | SELECT DATEDIFF(s, "1970-01-01 00:00:00", GETUTCDATE()) |
JavaScript | Math.round(new Date().getTime()/1000.0) getTime() возвращает время в миллисекундах. |
Unix/Linux | date +%s |
Другие OS | Командная строка: perl -e "print time" (Если Perl установлен на вашей системе) |
Конвертирование даты в Unix время в...
PHP | mktime(часы , минуты , секунды , месяц , день , год ) |
Ruby | Time.local(год , месяц , день , часы , минуты , секунды , usec ) (или Time.gm для GMT/UTC вывода). Чтобы вывести добавьте.to_i |
Python | import time сначала, потом int(time.mktime(time.strptime("2000-01-01 12:34:00", "%Y-%m-%d %H:%M:%S"))) |
Java | long epoch = new java.text.SimpleDateFormat ("dd/MM/yyyy HH:mm:ss").parse("01/01/1970 01:00:00"); |
VBScript/ASP | DateDiff("s", "01/01/1970 00:00:00", поле даты ) |
MySQL | SELECT unix_timestamp(время ) Формат времени: YYYY-MM-DD HH:MM:SS или YYMMDD или YYYYMMDD |
PostgreSQL | SELECT extract(epoch FROM date("2000-01-01 12:34")); С timestamp: SELECT EXTRACT(EPOCH FROM TIMESTAMP WITH TIME ZONE "2001-02-16 20:38:40-08"); C интервалом: SELECT EXTRACT(EPOCH FROM INTERVAL "5 days 3 hours"); |
SQL Server | SELECT DATEDIFF(s, "1970-01-01 00:00:00", поле с датой ) |
Unix/Linux | date +%s -d"Jan 1, 1980 00:00:01" |
Конвертирование Unix времеми в понятную дату(human readable date)...
PHP | date(Формат , unix время ); |
Ruby | Time.at(unix время ) |
Python | import time сначала, потом time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.localtime(unix время )) Замените time.localtime на time.gmtime для GMT даты. |
Java | String date = new java.text.SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(new java.util.Date (unix время *1000)); |
VBScript/ASP | DateAdd("s", unix время , "01/01/1970 00:00:00") |
PostgreSQL | SELECT TIMESTAMP WITH TIME ZONE "epoch" + unix время * INTERVAL "1 second"; |
MySQL | from_unixtime(unix время , не обязательно, выходной формат ) Стандартный формат выхода YYY-MM-DD HH:MM:SS |
SQL Server | DATEADD(s, unix время , "1970-01-01 00:00:00") |
Microsoft Excel | =(A1 / 86400) + 25569 Результат будет в GMT зоне времени. Для других временных зон: =((A1 +/- разница аремени для зоны) / 86400) + 25569. |
Linux | date -d @1190000000 |
Другие OS | Командная строка: perl -e "print scalar(localtime(unix время ))" (Если установлен Perl) Замените "localtime" на "gmtime" для GMT/UTC зоны времени. |