Many things factor into how ExpressionEngine determines an entries date.
ExpressionEngine itself:
The server needs to have the timezone properly set at the system level and in php.ini
In the Control Panel, Admin-> Localization Settings: The “Server Time Zone” should match the server’s own settings and DST should be enabled if in effect. “Server Offset (in minutes)” can be left alone in almost every case.
Then, a member’s own localization settings are applied. If you are logged into the Control Panel or the front-end, or logged into the Control Panel and viewing the front-end then the entry date reflects your members localization settings under My Account-> Localization Settings.
In this instance, say your server is in the US West Coast (UTC -8) and you are in the US East Cost (UTC -5). If you are logged into the Control Panel or the front-end of a member site, entry dates will be affected by your local time, off by 3 hours.
For instance, you make an entry in UTC -5 and it is 8PM. The entry is published, you see it on the front of the site and all is well. You log out of the Control Panel, or a random visitor sees the site - the server is in UTC -8 and it is only 5PM there, the entry appears to not be published.
If you are logged out, entry dates will reflect the system’s time, off by 3 hours in the other direction - so to speak. Any visitors to the site are presented with the system’s timezone.
Member settings can be forced to honor ExpressionEngine system settings, but if users can set their own, they should reflect the users local timezone and DST customs.
You can force members to use the system’s time by going to Members-> Preferences: Allow members to set their own localization preferences? set to “No”.
I hope that helps clarify and gives you some ideas how to manage localization in ExpressionEngine.
Can you check that ExpressionEngine’s timezone is set properly for the server it is on? Now, if you, the server and ExpressionEngine are all in UTC -8, then we might want to get a closer look.
~