Linux time to datetime

How can I get a formatted date for a UNIX timestamp from the command line

I have a UNIX timestamp and I’d like to get a formatted date (like the output of date ) corresponding to that timestamp. My attempts so far:

$ date +%s 1282367908 $ date -d 1282367908 date: invalid date `1282367908' $ date -d +1282367908 date: invalid date `+1282367908' $ date +%s -d +1282367908 date: invalid date `+1282367908' 
$ TZ=UTC somecommand 1282368345 Sat Aug 21 05:25:45 UTC 2010 

8 Answers 8

$ date -r 1282368345 Sat Aug 21 07:25:45 CEST 2010 $ date -r 1282368345 +%Y-%m-%d 2010-08-21 

with GNU core tools (you have to dig through the info file for that):

$ date -d @1282368345 Sat Aug 21 07:25:45 CEST 2010 $ date -d @1282368345 --rfc-3339=date 2010-08-21 

With either, add the -u (standard) option, or pass a TZ=UTC0 environment variable to have the UTC date ( TZ=UTC0 defines a timezone called UTC with offset 0 from UTC while the behaviour for TZ=UTC (with no offset) is unspecified (though on most systems would refer to a system-defined timezone also called UTC with offset 0 from UTC)).

This is giving me a slightly different date: date -r 1447264553943 results in Wed Dec 28 01:39:03 BRST 47831 , when it’s actually 11/11/2015, 3:55:53 PM GMT-2:00 .

@hop ops, should have figured with the year being 47831, but that number was so high I missed it. Thanks!

After some googling, I found way to do it with the date command only:

$ date --date "Jan 1, 1970 00:00:00 +0000 + 1282367908 seconds" Sat Aug 21 09:18:28 MSD 2010 

another great example for how google makes you stupid. does nobody ever read the documentation anymore?

@hop, support for date -d @xxx was not added until coreutils 5.3 in 2005. That’s how you had to do it before that.

@StéphaneChazelas: a) this answer is from 2010 and b) why does this excuse googling before reading the documentation? If you answer from your own authority, one can excuse making errors like this, but if you have to look it up anyway, look it up right.

This perl one-liner will do it:

$ perl -e 'print scalar localtime $ARGV[0]' 1282367908 Sat Aug 21 09:18:28 2010 
$ zmodload zsh/datetime $ TZ=UTC0 strftime %c 1282368345 Sat 21 Aug 2010 05:25:45 UTC 
$ TZ=UTC0 printf '%(%c)T\n' '#1282368345' Sat Aug 21 05:25:45 2010 
$ TZ=UTC0 printf '%(%c)T\n' 1282368345 Sat 21 Aug 2010 05:25:45 UTC 

In all those, replace %c with the strftime() format you want.

Answer to an old question, but I think this might be an improvement if anyone else searches for this. This Bash function works on both Linux and OS X. I have not tested on any other BSD systems. Pass the epoch time as an argument to this function and it will print the RFC-3339 time format.

epochtorfc3339 () < RFC3339_FORMAT="+%FT%T. %z" EPOCH=$(echo $@ | sed -n "s/.*\(9\\).*/\1/p"); if date --version >/dev/null 2>/dev/null; then # Linux date $ -d "1970-01-01 UTC $ seconds" #date -d @$ --rfc-3339=seconds else # OS X/BSD date -r $ $ fi > 

Another neat example of the rich heritage of modern Unix. This is indeed possible under most BSD variants:

$ TZ=UTC date -r 1282368345 Sat Aug 21 05:25:45 UTC 2010 

(BTW your example seems to be off by one second)

Читайте также:  Arch linux graphical installer

Doesn’t work on Linux. hop’s answer seems to have the correct Linux answer. Thanks for pointing that out, I suspected something like that would happen, I’ve made it 45 seconds now.

For Unix-like environment, the following will work.

# Current UNIXTIME unixtime() < datetime2unixtime "$(date -u +'%Y-%m-%d %H:%M:%S')" ># From DateTime(%Y-%m-%d %H:%M:%S)to UNIXTIME datetime2unixtime() < set -- "$" "$" set -- "$" "$" "$" "$" set -- "$1" "$" "$" "$3" "$" "$" set -- "$1" "$" "$" "$" "$" "$" [ "$2" -lt 3 ] && set -- $(( $1-1 )) $(( $2+12 )) "$3" "$4" "$5" "$6" set -- $(( (365*$1)+($1/4)-($1/100)+($1/400) )) "$2" "$3" "$4" "$5" "$6" set -- "$1" $(( (306*($2+1)/10)-428 )) "$3" "$4" "$5" "$6" set -- $(( ($1+$2+$3-719163)*86400+$4*3600+$5*60+$6 )) echo "$1" > # From UNIXTIME to DateTime format(%Y-%m-%d %H:%M:%S) unixtime2datetime() < set -- $(( $1%86400 )) $(( $1/86400+719468 )) 146097 36524 1461 set -- "$1" "$2" $(( $2-(($2+2+3*$2/$3)/$5)+($2-$2/$3)/$4-(($2+1)/$3) )) set -- "$1" "$2" $(( $3/365 )) set -- "$@" $(( $2-( (365*$3)+($3/4)-($3/100)+($3/400) ) )) set -- "$@" $(( ($4-($4+20)/50)/30 )) set -- "$@" $(( 12*$3+$5+2 )) set -- "$1" $(( $6/12 )) $(( $6%12+1 )) $(( $4-(30*$5+3*($5+4)/5-2)+1 )) set -- "$2" "$3" "$4" $(( $1/3600 )) $(( $1%3600 )) set -- "$1" "$2" "$3" "$4" $(( $5/60 )) $(( $5%60 )) printf "%04d-%02d-%02d %02d:%02d:%02d\n" "$@" ># Examples unixtime # => Current UNIXTIME date +%s # Linux command datetime2unixtime "2020-07-01 09:03:13" # => 1593594193 date -u +%s --date "2020-07-01 09:03:13" # Linux command unixtime2datetime "1593594193" # => 2020-07-01 09:03:13 date -u --date @1593594193 +"%Y-%m-%d %H:%M:%S" # Linux command 

You must log in to answer this question.

Hot Network Questions

Subscribe to RSS

To subscribe to this RSS feed, copy and paste this URL into your RSS reader.

Site design / logo © 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA . rev 2023.7.17.43536

Linux is a registered trademark of Linus Torvalds. UNIX is a registered trademark of The Open Group.
This site is not affiliated with Linus Torvalds or The Open Group in any way.

By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.

Источник

Unix time конвертер (Конвертер времени Unix онлайн)

UNIX-время или POSIX-время (англ. Unix time) — способ кодирования времени, принятый в UNIX и других POSIX-совместимых операционных системах.
Моментом начала отсчёта считается полночь (по UTC) с 31 декабря 1969 года на 1 января 1970, время с этого момента называют «эрой UNIX» (англ. Unix Epoch).
Время UNIX согласуется с UTC, в частности, при объявлении високосных секунд UTC соответствующие номера секунд повторяются.
Способ хранения времени в виде количества секунд очень удобно использовать при сравнении дат (с точностью до секунды), а также для хранения дат: при необходимости их можно преобразовать в любой удобочитаемый формат. Дата и время в этом формате также занимают очень мало места (4 или 8 байтов, в зависимости от размера машинного слова), поэтому его разумно использовать для хранения больших объёмов дат. Недостатки в производительности могут проявиться при очень частом обращении к элементам даты, вроде номера месяца и т. п. Но в большинстве случаев эффективнее хранить время в виде одной величины, а не набора полей.

Читайте также:  Linux command shell commands
Обычная дата(Human readable time) Секунды
1 минута 60 секунд
1 час 3600 секунд
1 день 86400 секунд
1 неделя 604800 секунд
1 месяц (30.44 дней) 2629743 секунд
1 год (365.24 дней) 31556926 секунд

Конвертивание эпохи 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 зоны времени.
Читайте также:  Linux user authentication failed

Для чего нужен инструмент «Unixtime конвертер»?

Данный инструмент, в первую очередь, будет полезен веб-мастерам, которые постоянно имеют дело с большими объемами дат или часто в своей работе обращаются к их элементам. С помощью инструмента «Unixtime конвертер» можно легко конвертировать Unix время в понятную для пользователя дату (и наоборот), узнать текущее Unix epoch время, а также получить Unix время в различных языках программирования, СУБД и операционных системах.

Эра Unix (Unix epoch) началась в ночь с 31 декабря 1969 года на 1 января 1970 года. Именно эту дату взяли за точку отсчета «компьютерного» времени, которое исчисляется в секундах и занимает очень мало места на диске – всего 4 или 8 байт. С помощью такого способа кодирования программисты могут «спрятать» любую дату в одно число, и легко конвертировать его обратно в понятный пользователям формат.

Unix время (еще его называют Unix time или POSIX time) удобно использовать в различных операционных системах и языках программирования, так как оно отображается в виде одной величины, а не определенного количества полей, занимающих место. К тому же, UNIX time полностью соответствует стандарту UTC (в том числе и в високосных годах) – в таком случае соответствующие значения секунд просто повторяются.

Итак, 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 конвертер» такая конвертация займет у вас доли секунды.

Источник

Оцените статью
Adblock
detector