Правилно оглед на часовите зони в PHP

Какво е UTC

Формат UTC означава "координирано универсално време" и е наследник на "средно време по Гринуич» (GMT). Тези две формати са почти идентични, но UTC се счита за одобрен като стандарт. Като цяло, UTC въз основа на разпределението на 40 различни часови зони. За отправна точка в UTC реши да предприеме 00:00 часа. Общо получени 12 основни часови зони като положителна или отрицателна стойност, както и някои допълнителни часови зони, като половината UTC 04: 30. Идеята е, че ако имате часовата зона UTC -05: 00. тогава ще трябва да се извади 5 часа от първичен UTC 00: 00. за постигане на необходимото съответствие. Това означава, че ако тя е 14:00 (или 14:00) и часовата зона е UTC-05: 00 (EST и Източна часова зона), а след това на UTC, 00: 00 ще бъде равен до 19:00 (или 19:00).

Време за съхранение във формат UTC 00: 00

Първото нещо, което трябва да направим - да реши какво часова зона се използва за съхранение на всички наши ценности. Аз силно препоръчваме да вземем UTC 00: 00 - без специален повод, различен от този, който е лесен за запомняне и 0 представлява идеална отправна точка. Тъй като ние знаем, че всички дати са в UTC 00: 00. тя става много по-лесно да се представи подходящото време за всеки потребител на базата на личните си часови зони. След като избраните от потребителя (или имаме автоматична детекция) на вашия часови пояс, на изхода на подходящото време за потребителя става нещо обичайно.

Създаване часовата зона по подразбиране

Ако приемем, че всички наши дата / час съхранява в UTC, ние можем само да зададете часовата зона по подразбиране, който ще се използва за показване на всеки път. Това ще се регулира автоматично датата и часа за конкретен потребител. В PHP, всичко което трябва да направим - е да настроите часовата зона, например:

Можем да го направим във всеки блок на инициализация в началото на нашия код - и сте готови: всички дати се показват правилно за часовата зона, в която се намира потребителят.

Ако искаме да придобият пълен контрол над час и дата, можем да изградим една функция, както следва:

Конфигуриране на PHP под UTC 00: 00

Разбира се, не всичко е толкова просто, ако не се създаде нашата система по UTC, като Зоната по подразбиране. Убеден съм, че това може да се направи почти същото и на други езици, но PHP се извършва, както следва:

Сега, когато ние използваме такива неща като, например, (функция на времето). той автоматично ни дава път в UTC със съответния компенсира въз основа на нашето време сървър. Ако искаме да се коригира датата, на такава база данни като MySQL, направете следното:

Ако не е имал достъп до смяната на PHP конфигурация, тогава ние трябва да настройте времето ръчно определяне на датата, така:

Конфигуриране на MySQL за UTC 00: 00

Директен дата инсталация, както направихме по-горе, се прилага, ако ние нямаме разрешение да контролира конфигурационни параметри на MySQL. Независимо от това, ако искаме да използваме TIMESTAMP. което обикновено е самостоятелно подновяване или функция на избор MySQL, като NOW (). ние трябва да изберете да използвате MySQL UTC като Зоната по подразбиране.

В MySQL, това се прави чрез поставяне на UTC, офсет, което може да се направи толкова лесно, както беше в PHP, като направи следните промени:

Обновяване на съществуващата дата / час

Ако решите да се стандартизират часови зони, използващи UTC, където часовата зона е по подразбиране UTC 00: 00 изместване, че сега е текущото си време в базата данни няма да работи.

За щастие, MySQL предоставя удобен функция, която ни дава възможност лесно да актуализирате съществуващите часови зони.

ЗАБЕЛЕЖКА: Ако имате някакви времеви отпечатъци, те трябва да бъдат модернизирани на първо място.

Можем да търсите във всички области в нашата база данни за датата и часа, като се използва следната заявка:

Следователно, ние можем да използваме следната заявка за актуализиране на датата / часа в нашите маси:

Къде -05: 00 - текущия часови пояс, във формат, който съхранява време (това е както в предишния случай, се отнася до Изтока). Часова зона 00: 00. , в която искаме да се трансформира, в този случай тя се позовава на UTC.