I see this has been addressed in this thread but it's still not resolved despite being marked as such.
I'm in the Eastern Time Zone, and my WP is set to New York for the timezone. The post expirator properly shows that I'm currently in EDT in the box, but when I set it for an expiration of 23:59 and click update, the time goes to 4 hours before I set it.
It seems that whatever time I enter is assumed to be GMT, and then it is BACKconverted to my timezone (hence the 4 hours in my case, or 7 hours in the case of someone on the west coast) before the value is actually set on the post. That shouldn't be happening. It shouldn't be doing any math at all.
I'm in a Linux Shared Environment.