{"id":943,"date":"2026-10-28T03:00:00","date_gmt":"2026-10-28T03:00:00","guid":{"rendered":"https:\/\/vpslake.com\/blog\/?p=943"},"modified":"2026-10-28T03:00:00","modified_gmt":"2026-10-28T03:00:00","slug":"change-timezone-centos-stream-9","status":"publish","type":"post","link":"https:\/\/vpslake.com\/blog\/2026\/10\/28\/change-timezone-centos-stream-9\/","title":{"rendered":"How to Change Timezone on CentOS Stream 9 (Step-by-Step)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">To change timezone on CentOS Stream 9, select an IANA timezone and apply it with <code>timedatectl<\/code>. The new local time takes effect immediately, persists through reboots, and normally takes less than five minutes to configure over SSH.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Prerequisites<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>CentOS Stream 9 installed on the VPS.<\/li>\n\n\n<li>SSH access as <code>root<\/code>, or a normal account with working <code>sudo<\/code> privileges.<\/li>\n\n\n<li>The target timezone as an IANA name, such as <code>America\/Chicago<\/code>, <code>America\/Los_Angeles<\/code>, or <code>Asia\/Kolkata<\/code>.<\/li>\n\n\n<li>No special RAM, disk, or domain requirement; a <a href=\"https:\/\/vpslake.com\/buy-vps\">VPSLake Linux VPS<\/a> gives you the server access needed for this change.<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Step 1: Record the current time settings<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Check the current zone before changing it so you can separate a display change from a clock-synchronization problem.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>timedatectl status\ndate '+Local: %F %T %Z %z'\ndate -u '+UTC: %F %T %Z'<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The calendar values will differ on your server. A new VPS may report something similar to:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>               Local time: Thu 2026-10-08 09:14:22 UTC\n           Universal time: Thu 2026-10-08 09:14:22 UTC\n                 RTC time: Thu 2026-10-08 09:14:21\n                Time zone: Etc\/UTC (UTC, +0000)\nSystem clock synchronized: yes\n              NTP service: active\n          RTC in local TZ: no\nLocal: 2026-10-08 09:14:22 UTC +0000\nUTC: 2026-10-08 09:14:22 UTC<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The timezone changes how an instant is displayed. It does not manually set the server clock, and <code>chronyd<\/code> should continue to keep that clock aligned with network time.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 2: Find the correct IANA timezone<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">CentOS Stream 9 uses the system timezone database, so choose a complete region\/city identifier rather than a label such as \u201cCentral Time\u201d or an abbreviation like <code>CST<\/code>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>timedatectl list-timezones | grep -E '^(America|Asia|Australia|Europe)\/'<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Example results include:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>America\/Chicago\nAmerica\/Los_Angeles\nAmerica\/New_York\nAsia\/Kolkata\nAustralia\/Sydney\nEurope\/London<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">If you already know the region, narrow the output:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>timedatectl list-timezones | grep -E '^America\/(Chicago|Denver|Los_Angeles|New_York)$'<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">For an unfiltered list, use <code>timedatectl list-timezones | less<\/code> and press <code>q<\/code> when finished. A city-based entry carries the daylight-saving rules for that location. Use <code>UTC<\/code> when you want one stable offset for infrastructure logs and scheduled maintenance.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 3: Apply the new timezone<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>timedatectl<\/code> updates the running system and the persistent <code>\/etc\/localtime<\/code> configuration together, so you do not need to edit a zoneinfo file by hand.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo timedatectl set-timezone YOUR_REGION\/YOUR_CITY<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Replace <code>YOUR_REGION\/YOUR_CITY<\/code> with the exact entry selected in Step 2, for example <code>America\/Chicago<\/code> or <code>Asia\/Kolkata<\/code>. A successful command normally prints nothing. Read back both the stored name and the resolved timezone file:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>timedatectl show --property=Timezone --value\nreadlink -f \/etc\/localtime<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">For <code>America\/Chicago<\/code>, the result should resemble:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>America\/Chicago\n\/usr\/share\/zoneinfo\/America\/Chicago<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The <a href=\"https:\/\/www.freedesktop.org\/software\/systemd\/man\/latest\/timedatectl.html\" target=\"_blank\" rel=\"noopener\">systemd <code>timedatectl<\/code> documentation<\/a> lists the supported timezone operations and output properties.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 4: Confirm Chrony still has the clock under control<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Timezone selection and time synchronization are separate settings; check <code>chronyd<\/code> so a wrong clock is not blamed on the new offset.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl is-active chronyd\nsystemctl is-enabled chronyd\nchronyc tracking<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">On a synchronized host, the first commands should return <code>active<\/code> and <code>enabled<\/code>. The tracking report should contain values similar to:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Reference ID    : 192.0.2.25 (ntp.example)\nStratum         : 3\nSystem time     : 0.000021 seconds fast of NTP time\nLeap status     : Normal<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The reference server and measured offset vary. The useful checks are an active service and <code>Leap status : Normal<\/code>. CentOS Stream 9 uses the <code>chrony<\/code> package and <code>chronyd<\/code> service for NTP; the <a href=\"https:\/\/docs.redhat.com\/en\/documentation\/red_hat_enterprise_linux\/9\/html\/configuring_basic_system_settings\/assembly_changing-basic-environment-settings_configuring-basic-system-settings\" target=\"_blank\" rel=\"noopener\">RHEL 9 time configuration guide<\/a> documents the same systemd and Chrony workflow.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Verify the new CentOS Stream 9 timezone<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Run one final comparison of the exact zone, synchronization flag, local time, and UTC. The local and UTC lines should describe the same instant with different offsets.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>timedatectl show --property=Timezone --property=NTPSynchronized\ndate '+Local: %F %T %Z %z'\ndate -u '+UTC:   %F %T %Z'<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">After choosing <code>America\/Chicago<\/code>, expected output will look like this:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Timezone=America\/Chicago\nNTPSynchronized=yes\nLocal: 2026-10-08 04:14:22 CDT -0500\nUTC:   2026-10-08 09:14:22 UTC<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Your timestamp will be different. The configuration is correct when <code>Timezone<\/code> matches your chosen entry and <code>NTPSynchronized=yes<\/code>; a program that intentionally logs in UTC can still show UTC by design.<\/p>\n\n\n\n<aside class=\"vl-element vl-cta-banner\" aria-label=\"Keep server time predictable\">\n\t<div class=\"vl-cta-banner__content\">\n\t\t<p class=\"vl-cta-banner__eyebrow\">CentOS Stream VPS<\/p>\n\t\t<h3 class=\"vl-cta-banner__title\">Keep server time predictable<\/h3>\n\t\t<p class=\"vl-cta-banner__text\">Launch a Linux VPS with root access for consistent logs, cron schedules, and application timestamps.<\/p>\n\t<\/div>\n\t<a class=\"vl-cta-banner__button\" href=\"\/buy-vps\" aria-label=\"View Linux VPS plans\">View Linux VPS plans<\/a>\n<\/aside>\n\n\n\n<h2 class=\"wp-block-heading\">Troubleshooting<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><code>Failed to set time zone: Invalid or unknown time zone<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The value is not an exact entry in the installed tzdata database. Run <code>timedatectl list-timezones<\/code> again and copy the complete spelling, including capitalization and underscores. Do not substitute a Windows timezone name, a display label, or a short abbreviation.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><code>Authentication is required<\/code> or <code>Access denied<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Changing the system-wide zone requires administrator rights. Check the account with <code>sudo -v<\/code>, add <code>sudo<\/code> to the command, or reconnect as <code>root<\/code>; changing permissions on <code>\/etc\/localtime<\/code> is unnecessary.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><code>chronyc: command not found<\/code> or <code>chronyd<\/code> is inactive<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The Chrony package may be missing, or its service may have been stopped. Install it from the CentOS Stream repositories and enable the service:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo dnf install -y chrony\nsudo systemctl enable --now chronyd\nchronyc tracking<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">If tracking still has no usable source, inspect the recent service messages and confirm that the provider firewall allows outbound UDP traffic to NTP servers on port 123:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo journalctl -u chronyd -n 30 --no-pager\nchronyc sources -v<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><code>date<\/code> shows UTC after the change<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">First check <code>timedatectl show --property=Timezone --value<\/code>. If it reports your selected zone, the host setting is correct; the shell may have a <code>TZ<\/code> environment variable, or the application may deliberately use UTC. Check with <code>env | grep '^TZ='<\/code>, then inspect the affected service\u2019s own timezone configuration.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">A scheduled job runs at an unexpected hour<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Cron interprets schedules using the system\u2019s local timezone unless a job or application specifies another zone. Review jobs that run near daylight-saving transitions and use UTC in the schedule when the execution time must remain fixed globally.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Operational notes<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Use <code>UTC<\/code> for shared infrastructure when operators and users work across several regions.<\/li>\n\n\n<li>Keep <code>chronyd<\/code> enabled; changing a timezone should not involve manually setting the clock with <code>date<\/code>.<\/li>\n\n\n<li>Record the chosen IANA identifier in provisioning notes so a rebuild uses the same convention.<\/li>\n\n\n<li>Restart only an application that explicitly caches the system timezone at startup; a server reboot is not required.<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">FAQ<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">What timezone should I use for a Dallas VPS?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Use <code>America\/Chicago<\/code>, which applies the Central Time rules used in Dallas. Confirm it appears in <code>timedatectl list-timezones<\/code> before applying it, and use <code>UTC<\/code> instead if the server is shared across regions.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Can I set CentOS Stream 9 to <code>CST<\/code> or <code>PST<\/code>?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Use a full IANA name such as <code>America\/Chicago<\/code> or <code>America\/Los_Angeles<\/code>. Abbreviations are ambiguous and do not express the complete seasonal rules for a location.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Will changing the timezone restart services or require a reboot?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">No. The system setting changes immediately and remains in place after a reboot. A long-running application may need its own restart only if it read the old zone once during startup.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Does the timezone change alter NTP accuracy?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">No. <code>timedatectl<\/code> changes the presentation of the current instant, while <code>chronyd<\/code> synchronizes the clock against network sources. Verify the two independently with <code>timedatectl<\/code> and <code>chronyc tracking<\/code>.<\/p>\n\n\n\n<script type=\"application\/ld+json\">{\"@context\": \"https:\/\/schema.org\", \"@type\": \"FAQPage\", \"mainEntity\": [{\"@type\": \"Question\", \"name\": \"What timezone should I use for a Dallas VPS?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Use `America\/Chicago`, which applies the Central Time rules used in Dallas. Confirm it appears in `timedatectl list-timezones` before applying it, and use `UTC` instead if the server is shared across regions.\"}}, {\"@type\": \"Question\", \"name\": \"Can I set CentOS Stream 9 to `CST` or `PST`?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Use a full IANA name such as `America\/Chicago` or `America\/Los_Angeles`. Abbreviations are ambiguous and do not express the complete seasonal rules for a location.\"}}, {\"@type\": \"Question\", \"name\": \"Will changing the timezone restart services or require a reboot?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"No. The system setting changes immediately and remains in place after a reboot. A long-running application may need its own restart only if it read the old zone once during startup.\"}}, {\"@type\": \"Question\", \"name\": \"Does the timezone change alter NTP accuracy?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"No. `timedatectl` changes the presentation of the current instant, while `chronyd` synchronizes the clock against network sources. Verify the two independently with `timedatectl` and `chronyc tracking`.\"}}]}<\/script>\n\n","protected":false},"excerpt":{"rendered":"Learn how to change timezone on CentOS Stream 9 with timedatectl, choose an IANA zone, keep chrony accurate, and verify the setting without a reboot.","protected":false},"author":1,"featured_media":944,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_singular_sidebar":"","csco_page_header_type":"","csco_page_load_nextpost":"","footnotes":""},"categories":[5,9],"tags":[111,109,108,107],"class_list":["post-943","post","type-post","status-publish","format-standard","has-post-thumbnail","category-guides","category-vps-hosting","tag-centos-stream-9","tag-chrony","tag-timedatectl","tag-timezone","cs-entry"],"_links":{"self":[{"href":"https:\/\/vpslake.com\/blog\/wp-json\/wp\/v2\/posts\/943","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vpslake.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vpslake.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vpslake.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vpslake.com\/blog\/wp-json\/wp\/v2\/comments?post=943"}],"version-history":[{"count":1,"href":"https:\/\/vpslake.com\/blog\/wp-json\/wp\/v2\/posts\/943\/revisions"}],"predecessor-version":[{"id":3765,"href":"https:\/\/vpslake.com\/blog\/wp-json\/wp\/v2\/posts\/943\/revisions\/3765"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vpslake.com\/blog\/wp-json\/wp\/v2\/media\/944"}],"wp:attachment":[{"href":"https:\/\/vpslake.com\/blog\/wp-json\/wp\/v2\/media?parent=943"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vpslake.com\/blog\/wp-json\/wp\/v2\/categories?post=943"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vpslake.com\/blog\/wp-json\/wp\/v2\/tags?post=943"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}