Changing system date and time formats on Linux keeps logs, reports, dashboards, and operator output aligned with the regional style a team expects. A consistent date order, clock style, and timezone makes timestamps easier to scan and reduces mistakes when comparing output from several hosts.

Date and time presentation is controlled by locale categories such as LANG and LC_TIME plus the system timezone. On systemd-based Linux distributions, localectl writes the default locale settings and timedatectl updates the timezone through the zoneinfo database under /usr/share/zoneinfo.

Changing these defaults requires administrator access and usually affects only new login sessions and services started after the change. Existing shells can keep the old values until they reconnect, and changing the timezone can shift how fresh log entries, cron jobs, and monitoring events appear compared with older records.

Steps to change system date and time formats in Linux:

  1. Inspect the current locale, timezone, and a sample formatted timestamp before changing anything.
    $ locale | grep -E '^(LANG=|LC_TIME=)'
    LANG=en_US.UTF-8
    LC_TIME="en_US.UTF-8"
    
    $ timedatectl | sed -n '1,8p'
                   Local time: Tue 2026-04-14 11:46:51 +08
               Universal time: Tue 2026-04-14 03:46:51 UTC
                     RTC time: Tue 2026-04-14 03:46:51
                    Time zone: Asia/Kuala_Lumpur (+08, +0800)
    System clock synchronized: no
                  NTP service: inactive
              RTC in local TZ: no
    
    $ date +"%x %X %Z"
    04/14/2026 11:46:51 AM +08

    LC_TIME controls date order and clock style, while the system timezone controls the local offset and zone abbreviation shown by tools such as date and timedatectl.

  2. List available locales and choose the one that matches the target date and time style.
    $ localectl list-locales
    C.UTF-8
    en_AG.UTF-8
    en_AU.UTF-8
    ##### snipped #####
    en_GB.UTF-8
    ##### snipped #####
    en_US.UTF-8
    ##### snipped #####

    If the target locale is missing, generate it with the distribution's locale tooling before continuing. On many Debian and Ubuntu systems that means locale-gen, while other glibc-based systems may use localedef.

  3. Set the default system locale and override only the date and time category when the language should stay the same.
    $ sudo localectl set-locale LANG=en_US.UTF-8 LC_TIME=en_GB.UTF-8

    This keeps messages in en_US.UTF-8 while switching date and time formatting to the en_GB.UTF-8 rules.

  4. Confirm that the new system locale defaults were saved correctly.
    $ localectl status
    System Locale: LANG=en_US.UTF-8
                   LC_TIME=en_GB.UTF-8
        VC Keymap: (unset)
       X11 Layout: us
        X11 Model: pc105

    On distributions without systemd-localed, the same values are usually stored in /etc/locale.conf or /etc/default/locale through the distro's native tools.

  5. Search the timezone database and pick the region that should define local clock output.
    $ timedatectl list-timezones | grep -i london
    Europe/London
  6. Apply the new timezone.
    $ sudo timedatectl set-timezone Europe/London

    Changing the system timezone affects new log timestamps, scheduled job timing, and any service that formats local time instead of UTC.

  7. Verify that the timezone and formatted output now match the target format.
    $ timedatectl | sed -n '1,8p'
                   Local time: Tue 2026-04-14 04:45:36 BST
               Universal time: Tue 2026-04-14 03:45:36 UTC
                     RTC time: Tue 2026-04-14 03:45:36
                    Time zone: Europe/London (BST, +0100)
    System clock synchronized: no
                  NTP service: inactive
              RTC in local TZ: no
    
    $ date +"%x %X %Z"
    14/04/26 04:45:36 BST

    Existing shells may keep the old locale until they log in again, so open a new terminal or restart affected services if the formatted output does not change immediately.