date - Linux


Overview

The date command in Linux displays or sets the system date and time. This command can be used to output the current time in various formats and to modify the system clock as permitted. It is particularly useful for scripting and logging purposes, where precise time stamps are needed, and for system maintenance tasks.

Syntax

The basic syntax of the date command is as follows:

date [OPTION]... [+FORMAT]
  • OPTION refers to the command options that modify its behavior.
  • FORMAT is a string that starts with +, followed by a specifier to format the output of the date/time.

Options/Flags

Here is a list of commonly used options in the date command:

  • -d, --date=STRING: Display the time described by STRING, instead of the current time.
  • -f, --file=DATEFILE: Like --date, but processed for each line of DATEFILE.
  • -I[TIMESPEC], --iso-8601[=TIMESPEC]: Output date/time in ISO 8601 format. TIMESPEC can be date, hours, minutes, seconds, or ns for different levels of precision.
  • -r, --reference=FILE: Display the last modification time of FILE.
  • -R, --rfc-email: Output date and time in RFC 5322 format, useful for email timestamps.
  • -u, --utc, --universal: Print or set Coordinated Universal Time (UTC).
  • --help: Display help information and exit.
  • --version: Output version information and exit.

Examples

  1. Display the current date and time:
    date
    
  2. Display the current date in YYYY-MM-DD format:
    date +%F
    
  3. Set the system date and time, provided you have the appropriate permissions:
    sudo date -s "2023-09-21 20:00:00"
    
  4. Display the date and time one month ago:
    date --date="1 month ago"
    
  5. Print the file modification date of a file:
    date -r filename
    

Common Issues

  • Permission Denied: When trying to set the system date without sufficient permissions. Use sudo to gain administrative access.
  • Invalid Date String: Common when incorrect format strings are used with -d. Ensure your date inputs match expected patterns.
  • Time Zone Conflicts: When working across different time zones, use the -u option to unify outputs to UTC.

Integration

Combine date with other commands for more complex tasks:

echo "System rebooted on $(date)" >> system.log

This command appends a timestamped reboot record to a log file.

  • timedatectl: Control the system time and date for systems using systemd.
  • hwclock: Query or set the hardware clock (RTC).

For further exploration, refer to the date man page by running man date in your terminal.