添加30分钟的PHP日期,插入MySQL datetime列时会反转

I believe I'm going mad.

$expire = date('Y-m-d H:i:s', strtotime("+30 minutes") );

It works as expected when echoed, yet when I insert it into a custom table via the wordpress database class, into a datetime column it's showing current time minus 30 mins.

Am I mad?

Simply given the time frame you are working with, it makes me wonder if you are seeing a Standard/Daylight time conflict, assuming you observe daylight savings time where you are.

First, See if you experience the same issue with "+60 minutes" as a test. If it is then -60 in the database, then it may be a bug, however, if it is then the current time in the database, it may actually be a timezone issue.

Make sure all of your timezones are properly configured on your host OSes and in your database. If the database column is of the type "timestamp" then mysql converts it to UTC on storage, and back on retrieval, so a mis-configured timezone could cause a 1 hour offset there as well.

Hope This Helps!

All date and time functions are now dependent upon a correct timezone setting.

You can either do this in your script

date_default_timezone_set('America/Los_Angeles');  // for example

OR Check your php.ini for this setting

date.timezone = UTC

And set it correctly for your specific timezone, here is a List of supported timezones which you will need either way