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

Время в формате Unixtime

UNIX-время или POSIX-время (англ. Unix time) - удобный способ кодирования времени, принятый за основной в UNIX и других POSIX-совместимых операционных системах.
Само время записывается в прошедших секундах от начала эры Unix (англ. Unix Epoch), которая началась в полночь (по UTC ) с 31 декабря 1969 года на 1 января 1970г. Время Unix согласуется с UTC, в частности, при объявлении висококосных секунд UTC - соответствующие номера секунд повторяются.

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

Обычная дата (ЧеловекоЧитаемая дата) Секунды
1 минута60 секунд
1 час3600 секунд
1 день86400 секунд
1 неделя604800 секунд
1 месяц (30.44 дней) 2629743 секунд
1 год (365.24 дней) 31556926 секунд


Получение UnixTime в разной среде "обитания":
Perltime
PHPtime()
RubyTime.now (или Time.new). Чтобы вывести: Time.now.to_i
Pythonimport time сначала, потом time.time()
Javalong epoch = System.currentTimeMillis()/1000;
Microsoft .NET C#epoch = (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000;
VBScript/ASPDateDiff("s", "01/01/1970 00:00:00", Now())
Erlangcalendar:datetime_to_gregorian_seconds(calendar:now_to_universal_time( now()))-719528*24*3600.
MySQLSELECT unix_timestamp(now())
PostgreSQLSELECT extract(epoch FROM now());
SQL ServerSELECT DATEDIFF(s, '1970-01-01 00:00:00', GETUTCDATE())
JavaScriptMath.round(new Date().getTime()/1000.0) getTime() возвращает время в миллисекундах.
Unix/Linuxdate +%s
Другие OSКомандная строка: perl -e "print time" (Если Perl установлен на вашей системе)


Как конвертировать обычную дату в UnixTime?
PHPmktime(часы, минуты, секунды, месяц, день, год)
RubyTime.local(год, месяц, день, часы, минуты, секунды, usec ) (или Time.gm для GMT/UTC вывода). Чтобы вывести добавьте .to_i
Pythonimport time сначала, потом int(time.mktime(time.strptime('2000-01-01 12:34:00', '%Y-%m-%d %H:%M:%S')))
Javalong epoch = new java.text.SimpleDateFormat ("dd/MM/yyyy HH:mm:ss").parse("01/01/1970 01:00:00");
VBScript/ASPDateDiff("s", "01/01/1970 00:00:00", поле даты)
MySQLSELECT unix_timestamp(время) Формат времени: YYYY-MM-DD HH:MM:SS или YYMMDD или YYYYMMDD
PostgreSQLSELECT 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/Linuxdate +%s -d"Jan 1, 1980 00:00:01"


Конвертируем обратно, UnixTime секунды в понятную, человекочитаемую дату:
PHPdate(Формат, unix время);
RubyTime.at(unix время)
Pythonimport time сначала, потом time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.localtime(unix время)) Замените time.localtime на time.gmtime для GMT даты.
JavaString date = new java.text.SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(new java.util.Date (unix время*1000));
VBScript/ASPDateAdd("s", unix время, "01/01/1970 00:00:00")
PostgreSQLSELECT TIMESTAMP WITH TIME ZONE 'epoch' + unix время * INTERVAL '1 second';
MySQLfrom_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.
Linuxdate -d @1190000000
Другие OSКомандная строка: perl -e "print scalar(localtime(unix время))" (Если установлен Perl) Замените 'localtime' на 'gmtime' для GMT/UTC зоны времени.

По большей части информация стащена с: www.cy-pr.com/tools/time/

Комментарии и отзывы к материалу

18.02.2014

Иван пишет:
Хорошая статья. Без лишней воды, только то что нужно. Спасибо большое.

Отправить комментарий

Как зовут?

Сообщение