Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Most common Bash date commands for timestamping
- From time to time I get asked how to use the date command to generate a timestamp. Here is an idiot-friendly script you can post for reference in your team’s bin/ if you get interrupted about timestamp questions or have an aversion to typing phrases like “man date” (with or without a space).
- All but the first one and last three produce filename-friendly strings.
- A big thanks to the following folks for pointing out mistakes and suggesting useful format inclusions:
- 2013-05: Rich for the reminder to include UTC and timezoned stamps.
- 2017-10: “Hamilton and Meg” (haha!) for pointing out I had my 4 year example formats messed up and for prodding me to include a 2-year example.
- 2018-01: Autumn Gray for suggesting that I add examples of including short and long days of the week.
- #! /bin/bash
- # An overly obvious reference for most commonly requested bash timestamps
- # Now all you Mac fags can stop pestering me.
- cat << EOD
- Format/result | Command | Output
- --------------------------------+----------------------------+------------------------------
- YYYY-MM-DD_hh:mm:ss | date +%F_%T | $(date +%F_%T)
- YYYYMMDD_hhmmss | date +%Y%m%d_%H%M%S | $(date +%Y%m%d_%H%M%S)
- YYYYMMDD_hhmmss (UTC version) | date --utc +%Y%m%d_%H%M%SZ | $(date --utc +%Y%m%d_%H%M%SZ)
- YYYYMMDD_hhmmss (with local TZ) | date +%Y%m%d_%H%M%S%Z | $(date +%Y%m%d_%H%M%S%Z)
- YYYYMMSShhmmss | date +%Y%m%d%H%M%S | $(date +%Y%m%d%H%M%S)
- YYYYMMSShhmmssnnnnnnnnn | date +%Y%m%d%H%M%S%N | $(date +%Y%m%d%H%M%S%N)
- YYMMDD_hhmmss | date +%y%m%d_%H%M%S | $(date +%y%m%d_%H%M%S)
- Seconds since UNIX epoch: | date +%s | $(date +%s)
- Nanoseconds only: | date +%N | $(date +%N)
- Nanoseconds since UNIX epoch: | date +%s%N | $(date +%s%N)
- ISO8601 UTC timestamp | date --utc +%FT%TZ | $(date --utc +%FT%TZ)
- ISO8601 UTC timestamp + ms | date --utc +%FT%T.%3NZ | $(date --utc +%FT%T.%3NZ)
- ISO8601 Local TZ timestamp | date +%FT%T%Z | $(date +%FT%T%Z)
- YYYY-MM-DD (Short day) | date +%F\(%a\) | $(date +%F\(%a\))
- YYYY-MM-DD (Long day) | date +%F\(%A\) | $(date +%F\(%A\))
- EOD
- If executed, it will produce the (obvious) output:
- Format/result | Command | Output
- --------------------------------+----------------------------+------------------------------
- YYYY-MM-DD_hh:mm:ss | date +%F_%T | 2018-01-24_13:06:51
- YYYYMMDD_hhmmss | date +%Y%m%d_%H%M%S | 20180124_130651
- YYYYMMDD_hhmmss (UTC version) | date --utc +%Y%m%d_%H%M%SZ | 20180124_040651Z
- YYYYMMDD_hhmmss (with local TZ) | date +%Y%m%d_%H%M%S%Z | 20180124_130651JST
- YYYYMMSShhmmss | date +%Y%m%d%H%M%S | 20180124130651
- YYYYMMSShhmmssnnnnnnnnn | date +%Y%m%d%H%M%S%N | 20180124130651170243401
- YYMMDD_hhmmss | date +%y%m%d_%H%M%S | 180124_130651
- Seconds since UNIX epoch: | date +%s | 1516766811
- Nanoseconds only: | date +%N | 174236092
- Nanoseconds since UNIX epoch: | date +%s%N | 1516766811175655627
- ISO8601 UTC timestamp | date --utc +%FT%TZ | 2018-01-24T04:06:51Z
- ISO8601 UTC timestamp + ms | date --utc +%FT%T.%3NZ | 2018-01-24T04:06:51.178Z
- ISO8601 Local TZ timestamp | date +%FT%T%Z | 2018-01-24T13:06:51JST
- YYYY-MM-DD (Short day) | date +%F\(%a\) | 2018-01-24(水)
- YYYY-MM-DD (Long day) | date +%F\(%A\) | 2018-01-24(水曜日)
- Note that the last two, short and long day-of-week are dependent on the environment variable LANG. After setting LANG=en_US we wind up with the following:
- YYYY-MM-DD (Short day) | date +%F\(%a\) | 2018-01-24(Wed)
- YYYY-MM-DD (Long day) | date +%F\(%A\) | 2018-01-24(Wednesday)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement