Процесс публикации одной из статей блога затянулся и окончился в час ночи. Когда я стал проверять, как статья видна в среди других материалов: я не увидел мою статью. Я решил, что я поставил время публикации не на тот день и проверил это в первую очередь - все было верно. Я поставил дату публикации на день назад: статья появилась на сайте. Я оставил время публикации вчерашним днем и решил, как будет время разобраться почему так произошло.

Я живу в GMT+3, поэтому у меня периодически возникают сложности с часами. Интуитивно понятно, что такой небольшой баг в публикации статьи появился из-за того, что система привела мое время к GMT и решила, что у меня "еще вчера".

Для эксперимента я сделал тестовую статью, и опубликовал ее на сегодня. В поле created_at стояло время по GMT. В поле же published_at стоял только дата. Дата без времени, и конечно это была та дата, которую я указал. Но при сравнении времени, система добавляла к дате 00:00:00, а из моего времени вычиатал смещение часового пояса, и у меня получалось вчера.

Для меня это не критичный баг. Я бы даже сказал, что это фича, разрешить которую в рамках публикации по дате достаточно сложно. С другой стороны, эта фича явно показывает, как экономия на размере полей БД, может привести к достаточно неочевидным последствиям, много месяцев после неверного решения.