Table of Contents
Your Ubuntu server is the foundation your entire website runs on. Its system time is the source of truth that WordPress, PHP, and your database all reference. If that foundation is set to a different time, your website will be out of sync with the real world. In this comprehensive guide, we’ll explore why this setting is so critical for your Elementor site and then walk through the three easiest methods to fix it permanently.
Key Takeaways
- Website Impact: An incorrect server timezone can break WordPress scheduled posts (the “missed schedule” error), skew Elementor form timestamps, and cause WooCommerce sales to start or end at the wrong times.
- Server vs. WordPress: Your server (Ubuntu) and your WordPress admin (Settings > General) both have timezone settings. WordPress tries to use its setting, but if the underlying server time is wrong, many functions (especially cron jobs and logs) will still be incorrect.
- Why It Happens: Many default server images are set to UTC (Coordinated Universal Time). When you build your site, this default is often overlooked, leading to time discrepancies.
- The Fix: For modern Ubuntu systems, the timedatectl set-timezone command is the recommended, persistent, and easiest way to correct your server’s timezone.
- Verification is Key: After changing the server timezone, you must restart services like php-fpm and nginx/apache and then verify the new time inside your WordPress dashboard to ensure the change is fully applied.
Chapter 1: The “Why” — How Timezones Impact Your WordPress & Elementor Site
Before we get into the “how-to,” let’s cover the “why.” You might think the timezone setting in your WordPress dashboard (under Settings > General) is all that matters. While that setting is important, it primarily tells WordPress how to display time and calculate its UTC offset. The actual time data often comes from the server itself.
When your server’s clock is wrong, here’s exactly what can break on your live website.
WordPress Core Functions
These are the fundamental parts of WordPress that rely on accurate time.
Scheduled Posts and Content Drips
This is the most common and frustrating symptom. You use the WordPress scheduler to set a blog post to go live at 9:00 AM Tuesday. Tuesday comes and goes, and your post never publishes. You log in to find the dreaded “Missed schedule” error.
This happens because the WordPress cron system (wp-cron) relies on time. Your server, set to UTC, might think 9:00 AM (America/New_York) is still 5 hours in the future. The cron job checks the time, sees it’s “not time yet,” and moves on. By the time the server’s clock does reach the scheduled UTC equivalent, WordPress considers the post “late” and flags it as missed.
User Registration and Comment Timestamps
When a new user registers or leaves a comment, WordPress logs the time. If your server is in a different timezone, these timestamps will be skewed. This can be a major headache for community management, moderation, and support. A user might complain about a comment from “three hours ago” that your dashboard says was just posted, or vice-versa.
Elementor-Specific Features
As a professional web creator, you use Elementor Pro to build advanced features. These features are also time-sensitive.
Elementor Forms and Submission Timestamps
When a lead fills out your contact form, one of the most critical pieces of data is when they submitted it. Elementor logs this submission time. If your server timezone is 8 hours behind, a form submitted at 10:00 AM your time will be logged as 2:00 AM.
This completely disrupts your lead management. Your sales team gets a “new lead” notification that appears to be from the middle of the night, leading to confusion about response times. Furthermore, if you use Elementor’s [date] or [time] shortcodes in your follow-up emails, they will also pull the incorrect server time.
Speaking of emails, the reliability of your form notifications is just as important as the timestamp. A misconfigured server can also impact email deliverability. This is why many web creators use a dedicated transactional email service like Site Mailer by Elementor to bypass server-side email issues and ensure form submissions and other critical WordPress emails actually make it to the inbox.
You can see how Elementor’s Site Mailer works here:
Elementor Pro Popup and Content Triggers
Elementor Pro’s powerful Popup Builder and marketing tools allow you to set advanced display conditions. Want to show a “Happy Hour” popup only between 4 PM and 6 PM on Fridays? That trigger relies directly on your server’s time.
If your server is on UTC, your 4:00 PM (America/Los_Angeles) popup might not fire until midnight, or it might fire in the middle of the night. This renders your time-based marketing efforts completely ineffective. The same logic applies to any content you’ve set to display on specific days or times.
WooCommerce and eCommerce
For an eCommerce store, time isn’t just a detail. It’s money. If you’re using Elementor’s WooCommerce Builder to design your store, a time mismatch can directly cost you revenue.
Sale Start and End Dates
You launch a massive Black Friday sale set to start at 12:01 AM on Friday and end at 11:59 PM on Sunday. You’ve promoted this for weeks.
- If your server is ahead: Your sale ends hours before your customers expect it to. You’ll wake up to angry emails from shoppers on the West Coast who couldn’t check out at 10:00 PM on Sunday.
- If your server is behind: Your sale starts hours late. Your East Coast customers, up at midnight, see regular prices and either leave or buy at full price, leading to a support nightmare.
This applies to coupon validity, new product launches, and any time-sensitive promotion.
Order Timestamps and Fulfillment Logistics
Just like with form submissions, your order timestamps are critical. They tell your fulfillment team which orders came in first. They’re used for “order received” emails. If these timestamps are off by several hours, your entire fulfillment workflow and customer communication chain will be out of sync.
This also extends to any booking or appointment plugins you use with Elementor. If a customer books a 2:00 PM slot, but the server logs it as 10:00 PM, your entire calendar will be a mess.
Server Logs and Security
Finally, on a technical level, your server logs are your single source of truth for debugging and security.
- Debugging: When your site crashes and you check your PHP error log, you need to know when the fatal error occurred. If the log timestamps are 5 hours off, you’ll be looking in the wrong place, correlating it with the wrong user actions.
- Security: If your site is under attack, your security logs (like from Wordfence or Sucuri) are your only way to trace the attacker’s actions. An accurate timestamp is essential to know when the breach started, what files were accessed, and what the attacker did. Inaccurate logs make a forensic investigation nearly impossible.
Chapter 2: WordPress Timezone vs. Server Timezone
This is the most important concept to understand. Why can’t you just fix this in the WordPress dashboard?
Your WordPress site runs on a software “stack.” At the bottom is the hardware, then the Operating System (Ubuntu). On top of that runs your Web Server (Nginx/Apache) and PHP. Finally, at the top, runs WordPress (and Elementor). Each layer can have its own idea of what time it is.
- Ubuntu System Time: This is the base-level time for the entire server. This is the “true” time.
- PHP Time: PHP has its own timezone setting in a file called php.ini. Often, this is set to “inherit” from the system time.
- WordPress Time: This is the setting in Settings > General. WordPress takes the “true” time (which it gets from PHP, which gets it from Ubuntu) and then adds or subtracts the offset you choose (e.g., “UTC-5”).
The problem is that not all parts of the system respect the WordPress setting. System-level cron jobs, some PHP functions, and the web server’s logs will always use the Ubuntu System Time.
As web development expert Itamar Haim notes, “Web creators often chase ‘bugs’ in their WordPress settings for days, when the real issue lies one layer deeper in the server configuration. You can’t just tell WordPress it’s in New York if the server it’s living on is convinced it’s in London. The foundation has to be correct.”
This is why the best practice is to set all layers to the correct timezone.
- Set your Ubuntu server to your primary timezone (e.g., “America/New_York”).
- Set your PHP php.ini file to the same timezone (or just let it inherit from the server).
- Set your WordPress Settings > General to the same timezone.
This synchronizes all layers, eliminating any possibility of confusion. In this guide, we are fixing the most important layer: the Ubuntu System Time.
Chapter 3: Before You Begin: Pre-Change Checklist
You should only perform these actions if you have administrative (root or sudo) access to your server.
Are You on Shared, VPS, or Dedicated Hosting?
- Shared Hosting: You cannot change the system-wide timezone. You are sharing the server with hundreds of other sites. You will have to rely on the WordPress-level setting and hope for the best, or ask your provider to fix it (they likely won’t).
- VPS or Dedicated Hosting: Yes, this guide is for you. You have full control over the server environment.
- Managed Hosting: On a premium managed platform like Elementor Hosting, this is usually configured for you correctly from the start. If it’s wrong, you can typically ask their support team to change the server’s environment settings for you.
Gaining SSH Access
You’ll need to connect to your server using SSH (Secure Shell). This is a command-line interface.
- macOS/Linux: Use the built-in Terminal application.
- Windows: Use a free client like PuTTY or the built-in Windows Terminal.
You’ll connect using a command like: ssh your_username@your_server_ip
Checking Your Current Server Timezone
Once you are logged in via SSH, run this simple command:
date
You will see an output like this: Wed Oct 29 09:30:14 UTC 2025
The “UTC” is the problem. It tells us the server thinks it’s in the Coordinated Universal Time timezone, not a local one. Our goal is to change “UTC” to something like “EDT” or “PST” and have the time adjust accordingly.
You can also run timedatectl for a more detailed view:
timedatectl
Output:
Local time: Wed 2025-10-29 09:30:20 UTC
Universal time: Wed 2025-10-29 09:30:20 UTC
RTC time: Wed 2025-10-29 09:30:21
Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
This confirms our Time zone is Etc/UTC. Now we’re ready to fix it.
Backing Up Your Server
While changing a timezone is a very low-risk operation, you should always have a recent backup before making any sudo level changes to your server. Use your hosting provider’s “Snapshot” feature to create a full server backup. Platforms like Elementor Hosting include automatic backup tools to make this step simple.
Chapter 4: How to Change the Timezone in Ubuntu (3 Easy Methods)
Here are the three most common ways to change the timezone. Method 1 is the modern, recommended approach.
Method 1: The timedatectl Command (Recommended)
This is the standard, modern utility for managing time on any systemd-based Linux distribution, which includes all modern versions of Ubuntu (16.04 and newer). It’s the cleanest and most reliable method.
Step 1: List Available Timezones
First, you need to find the exact name for your timezone. You can list all of them with this command:
timedatectl list-timezones
This will print a very long list (e.g., Africa/Abidjan, America/Adak, America/Anchorage).
Step 2: Find Your Specific Timezone
To save time, use grep to filter the list. For example, to find all “New York” timezones:
timedatectl list-timezones | grep “New_York”
Output: America/New_York
Or for “Chicago”:
timedatectl list-timezones | grep “Chicago”
Output: America/Chicago
Or for “London”:
timedatectl list-timezones | grep “London”
Output: Europe/London
Find the one that is correct for you. They are always in a Continent/City format.
Step 3: Set the Timezone
Now, use the set-timezone command. You must run this with sudo because it’s a system-wide change.
Replace America/New_York with the timezone you found in Step 2.
sudo timedatectl set-timezone America/New_York
You won’t see any output if it’s successful.
Step 4: Verify the Change
Now, run the date command again:
date
Output: Wed Oct 29 05:30:55 EDT 2025
Notice the time has changed (from 09:30 UTC to 05:30) and the timezone is now “EDT” (Eastern Daylight Time).
You can also run timedatectl again:
timedatectl
Output:
Local time: Wed 2025-10-29 05:31:02 EDT
Universal time: Wed 2025-10-29 09:31:02 UTC
RTC time: Wed 2025-10-29 09:31:03
Time zone: America/New_York (EDT, -0400)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
This confirms the “Local time” is now correct, and the “Time zone” is set to America/New_York. It’s even smart enough to show you the Universal Time (UTC) equivalent.
This method also handles Daylight Saving Time automatically. You’ll never have to change it again.
Method 2: Manually Reconfiguring tzdata (The Classic Debian Way)
This method uses the tzdata package, which is the underlying database of timezones. It launches a simple, text-based user interface (TUI) that is easy to navigate.
Step 1: Run the Reconfigure Command
Run this command with sudo:
sudo dpkg-reconfigure tzdata
Step 2: Navigate the Text-Based Interface
This will open a full-screen menu.
- Select Geographic Area: You’ll first be asked to choose your continent (e.g., “America”, “Europe”, “Asia”). Use the arrow keys to navigate and press Enter.
- Select City: Next, you’ll see a list of major cities in that continent. Find the city that corresponds to your timezone (e.g., “New_York”, “Los_Angeles”, “London”). Press Enter.
Step 3: Verify the Change
After you select your city, the utility will close and you’ll be back at the command prompt. It will output the new setting, for example:
Current default time zone: ‘America/New_York’
Local time is now: Wed Oct 29 05:32:15 EDT 2025.
Universal Time is now: Wed Oct 29 09:32:15 UTC 2025.
This method is very user-friendly for those who don’t want to grep through lists. It achieves the same result as timedatectl by updating the /etc/timezone file and relinking /etc/localtime.
Method 3: The tzselect Utility (Interactive but Incomplete)
I am including this method with a strong warning. Many old guides on the internet recommend tzselect, but it has a major pitfall: it does not actually change the timezone.
The tzselect command is a read-only, interactive tool to help you find your timezone string.
Step 1: Run the Command
tzselect
Step 2: Follow the On-Screen Prompts
It will ask you to select a continent, then a country, then a city, just like dpkg-reconfigure.
Step 3: The “Gotcha” – The Final Output
At the very end, it will print something like this:
The following information has been given:
United States
Eastern (most areas)
Therefore TZ=’America/New_York’ will be used.
Local time is now: Wed Oct 29 05:35:00 EDT 2025.
Universal Time is now: Wed Oct 29 09:35:00 UTC 2025.
This looks like it worked, but it’s a trick. It’s just showing you the time. It has not changed the system setting. Old guides would then tell you to manually edit a file like .profile and add export TZ=’America/New_York’. This is a bad, user-specific way to set the time.
If you use tzselect, you should just copy the string America/New_York and then use it with Method 1:
sudo timedatectl set-timezone America/New_York
Therefore, tzselect is really just a helper tool for Method 1, not a method in itself.
Chapter 5: What to Do After Changing the Timezone
You’re not quite done. You’ve changed the server’s time, but the services running on top of it (PHP and your web server) are likely still using the old time in their memory. You must restart them to force them to load the new timezone configuration.
Restarting Key Services
The commands may vary slightly based on your PHP version and web server.
Restarting PHP-FPM
This is the most important one for WordPress. Find your PHP version (e.g., php8.1-fpm).
sudo service php8.1-fpm restart
(If you’re on PHP 8.0, use php8.0-fpm, for 7.4 use php7.4-fpm, etc.)
Restarting Nginx or Apache
Next, restart your web server. For Nginx:
sudo service nginx restart
For Apache:
sudo service apache2 restart
Verifying in WordPress
Now for the final test.
- Go to your WordPress Dashboard.
- Navigate to Settings > General.
- Look at the “Timezone” setting. If it was set to a UTC offset (like UTC-5), it will still show that. But the “Local time” displayed underneath it should now be correct.
- Important: Click the dropdown and select the matching named timezone (e.g., “New York”). This is the best practice.
- Click Save Changes.
Now, test it:
- Create a Test Post: Schedule a post for 5 minutes in the future. Wait, and see if it publishes correctly.
- Submit a Form: Go to a contact page you built with Elementor and submit the form. Check the timestamp in your Elementor > Submissions page. It should now reflect your correct local time.
Conclusion
While it seems like a small technical task, setting your Ubuntu server’s timezone is a foundational step for running a professional WordPress or WooCommerce site. It ensures your scheduled content, marketing popups, eCommerce sales, and form submissions all run on the correct clock.
By taking a few minutes to set the correct time using timedatectl, you are eliminating a whole class of future “bugs” and ensuring your Elementor-powered website is perfectly in sync with your business and your customers.
Frequently Asked Questions (FAQ)
Q1: Will changing the timezone affect my existing WordPress posts or user data? No. It will not change any data already in your database. The timestamps for existing posts and users will remain the same (they are typically stored in UTC format in the database anyway). This change only affects future actions and how WordPress interprets and displays those times.
Q2: What’s the difference between timedatectl and dpkg-reconfigure tzdata? They accomplish the same goal. timedatectl is the modern, recommended tool for systemd systems. dpkg-reconfigure tzdata is the older, Debian-specific way. Both work, but timedatectl is considered the standard now as it also controls time synchronization (NTP).
Q3: My host says I’m on “Shared Hosting.” What can I do? You cannot change the server timezone. Your best bet is to go to Settings > General in WordPress and select a named timezone (like “America/Los_Angeles”). This will make WordPress try to correct for the time difference. However, it may not work for all functions, especially system-level cron jobs. If you experience persistent “missed schedule” errors, this is likely the cause.
Q4: What is NTP (Network Time Protocol)? You saw “NTP service: active” in the timedatectl output. This is a service that automatically syncs your server’s clock with a global network of ultra-accurate “atomic clocks.” This is essential. It prevents your server’s clock from “drifting” over time. The timedatectl set-ntp true command ensures this is enabled.
Q5: What is UTC? Why do servers use it by default? UTC (Coordinated Universal Time) is the global time standard. It is not a “timezone” in the common sense; it is the reference from which all other timezones are calculated by offsets. Servers use it by default because it’s a universal, unambiguous standard. It makes it easy to coordinate servers in different countries. The server logs everything in UTC, and then the application (like WordPress) is supposed to translate that UTC time into a local time for the user.
Q6: I set my timezone, but my Elementor form submissions are still wrong. You most likely forgot to restart PHP-FPM and your web server (Nginx/Apache). Run those restart commands (from Chapter 5), clear any caching plugins you have (like WP Rocket), and test again.
Q7: Will this fix my WooCommerce “sale has expired” errors? Yes. This is one of the most common reasons for those errors. If your server is on UTC, it may be 5-8 hours ahead of your customers, causing your sale’s end date/time to pass much earlier than you intended.
Q8: What timezone should I choose if I have a global audience? Your server should be set to the timezone where you, the administrator, or the business is based. This makes it easiest to manage your content schedule and logs. Your WordPress site, if it’s for a global audience, will still display post times relative to the user’s browser (depending on your theme). But for your management and scheduling, set the server to your local time.
Q9: I’m on Elementor Hosting. Do I need to do this? No. Elementor Hosting is a managed platform. Your server environment is pre-configured and optimized for WordPress and Elementor. If you notice a time issue, you can contact their support for assistance, but you should not need to use SSH for a task like this.
Q10: I ran tzselect and it said my timezone was changed, but date still shows UTC. What happened? You fell for the tzselect pitfall (see Method 3). The tzselect command only tells you what your timezone string is. It does not set it. You must still take that string (e.g., “America/New_York”) and use the timedatectl command: sudo timedatectl set-timezone America/New_York.
Looking for fresh content?
By entering your email, you agree to receive Elementor emails, including marketing emails,
and agree to our Terms & Conditions and Privacy Policy.