I have read the man pages for date command, but there is no option for converting unix time to string time. I found some websites telling this:

date -d @1343715322

there is no option like @ in the man and info pages. Can someone explain it?

  • What kind of date implementation you have? @ is specific for GNU date.
    – manatwork
    Commented Jul 31, 2012 at 6:43
  • My manpage for GNU date also doesn't describe @ but still uses it in an example. Yet I don't understand your question. @ seems to be the only way to do this with date so where's the problem?
    – scai
    Commented Jul 31, 2012 at 6:49

2 Answers 2


You usually won't find details like this in the man pages.

Check the info date, you will find this in the "Date input formats" section.


It's in the GNU date manual: http://www.gnu.org/software/coreutils/manual/coreutils.html#Seconds-since-the-Epoch. The same explanation is in the coreutils info pages.

If you precede a number with ‘@’, it represents an internal time stamp as a count of seconds. The number can contain an internal decimal point (either ‘.’ or ‘,’); any excess precision not supported by the internal representation is truncated toward minus infinity. Such a number cannot be combined with any other date item, as it specifies a complete time stamp.

Internally, computer times are represented as a count of seconds since an epoch—a well-defined point of time. On GNU and POSIX systems, the epoch is 1970-01-01 00:00:00 utc, so ‘@0’ represents this time, ‘@1’ represents 1970-01-01 00:00:01 utc, and so forth. GNU and most other POSIX-compliant systems support such times as an extension to POSIX, using negative counts, so that ‘@-1’ represents 1969-12-31 23:59:59 utc.

Traditional Unix systems count seconds with 32-bit two's-complement integers and can represent times from 1901-12-13 20:45:52 through 2038-01-19 03:14:07 utc. More modern systems use 64-bit counts of seconds with nanosecond subcounts, and can represent all the times in the known lifetime of the universe to a resolution of 1 nanosecond.

On most hosts, these counts ignore the presence of leap seconds. For example, on most hosts ‘@915148799’ represents 1998-12-31 23:59:59 utc, ‘@915148800’ represents 1999-01-01 00:00:00 utc, and there is no way to represent the intervening leap second 1998-12-31 23:59:60 utc.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .