Hướng dẫn dùng timezone az trong PHP

Hôm nay Kỹ Thuật xin giới thiệu đến các bạn về timezone của PHP và cách chỉnh timezone trên VPS lẫn Hosting.

Contents

TIMEZONE LÀ GÌ?

  • Một múi giờ là một vùng trên Trái Đất mà người ta quy ước sử dụng cùng một thời gian tiêu chuẩn, thông thường được nói đến như là giờ địa phương. Về lý thuyết, các đồng hồ tại vùng này luôn chỉ cùng một thời gian.
  • Hiện nay trên thế giới có vài loại quy ước về timezone:
    • GMT: được quy ước lần đầu tiên tại Anh vào thế kỷ 19.
    • UTC: được thực hiện bằng phương pháp nguyên tử. Là hệ thống thời gian dùng trong nhiều chuẩn internet và WWW. Đặc biệt là giao thức giờ trên mạng – NTP được thiết kế để phân phối tự động giờ trên internet.

CÁCH CHỈNH TIMEZONE TRÊN LINUX

Xác định giờ đang chạy trên Linux

Để xác định giờ trên Linux, bạn hãy dùng lệnh date.

Xác định thư mục chứa timezone

Trên Linux có một thư mục chứa thông tin cài đặt timezone nằm tại vị trí /usr/share/zoneinfo/

Xác định được múi giờ mình muốn đổi và copy file timezone đó đè về file /etc/localtime:

cp /usr/share/zoneinfo/Asia/Ho_Chi_Minh /etc/localtime

Kiểm tra lại với lệnh date để xem ngày giờ đã hiển thị đúng chưa.

Đồng bộ giờ qua internet với các NTP server

Tương tự như Window, Linux cũng cho phép đồng bộ giờ với các NTP server trên thế giới.

Ta cần dùng phương pháp này khi mà đã chọn đúng timezone nhưng trước đó ta có dùng lệnh date để chỉnh giờ và hiển thị không đúng kết quả mong muốn.

Trước tiên cần cài gói ntp, dùng lệnh yum:

yum install -y ntp

Khởi động dịch vụ:

service ntpd start

Chạy lệnh tiếp theo để đồng bộ giờ qua internet:

ntpdate vn.pool.ntp.org

(Trong đó vn.pool.ntp.org là server để đồng bộ, muốn đồng bộ giờ đúng thì trước tiên phải chọn timezone đúng copy vào /etc/localtime)

CÁCH CHỈNH TIMEZONE CHO PHP TẠI PHP.INI

Trước tiên cần tìm file php.ini trên máy chủ nằm ở đâu, gõ lệnh:

php -i | grep ini

Mở file php.ini theo đường dẫn.

vi /usr/local/etc/php5/cgi/php.ini

Thêm dòng lệnh vào đầu file và lưu lại:

date_default_timezone_set('Asia/Ho_Chi_Minh');

(Với Asia/Ho_Chi_Minh là timezone muốn cài đặt, có thể tham khảo thêm các timezone khác tại đây: http://php.net/manual/en/timezones.php)
Nếu không thay đổi trong file php.ini, bạn có thể đặt lệnh đó vào trong code php của bạn để tùy biến timezone theo từng mã nguồn.

CÁCH ĐỔI TIMEZONE TRONG CPANEL HOSTING 123HOST

Đăng nhập vào cpanel hosting 123host.

Tìm đến phần Software > Select php version

Chọn tiếp Switch To PHP Options

Tại dòng date.timezone, ta nhập vào timezone muốn thay đổi (tên các timezone tương tự trong file php.ini) và nhấn Apply, sau đó nhấn Save để lưu lại.

Để kiểm tra giờ đã đổi đúng chưa khi đổi trong file php.ini và trên cpanel hosting, ta sẽ tạo một file gettime.php đơn giản với nội dung:

Để giải quyết vấn đề này có nhiều cách, tuy nhiên trong chuyên đề này mình đi về time trong php nên mình sẽ dùng luôn hàm set lại muối giờ:.

Nếu bạn muốn thay đổi cấu hình múi giờ cho PHP script, bạn có thể chèn đoạn mã sau vào phần mã PHP của bạn:

\\ echo “Original Time: “. date(“h:i:s”).”\n”;
putenv(“TZ=US/Eastern”);
\\ echo “New Time: “. date(“h:i:s”).”\n”;
?>

Danh sách các mã múi giờ để sử dụng thay cho giá trị “US/Eastern” trong hàm putenv() có thể tìm thấy ở đây.

- Dưới đây là danh sách những múi giờ (time zone) được hỗ trợ trong PHP, những múi giờ này tương đối quan trọng bởi vì chúng rất thường được sử dụng bởi các hàm ngày tháng trong PHP.

Mỹ (America)

America/AdakAmerica/AnchorageAmerica/AnguillaAmerica/AntiguaAmerica/AraguainaAmerica/Argentina/Buenos_AiresAmerica/Argentina/CatamarcaAmerica/Argentina/ComodRivadaviaAmerica/Argentina/CordobaAmerica/Argentina/JujuyAmerica/Argentina/La_RiojaAmerica/Argentina/MendozaAmerica/Argentina/Rio_GallegosAmerica/Argentina/SaltaAmerica/Argentina/San_JuanAmerica/Argentina/San_LuisAmerica/Argentina/TucumanAmerica/Argentina/UshuaiaAmerica/ArubaAmerica/AsuncionAmerica/AtikokanAmerica/AtkaAmerica/BahiaAmerica/Bahia_BanderasAmerica/BarbadosAmerica/BelemAmerica/BelizeAmerica/Blanc-SablonAmerica/Boa_VistaAmerica/BogotaAmerica/BoiseAmerica/Buenos_AiresAmerica/Cambridge_BayAmerica/Campo_GrandeAmerica/CancunAmerica/CaracasAmerica/CatamarcaAmerica/CayenneAmerica/CaymanAmerica/ChicagoAmerica/ChihuahuaAmerica/Coral_HarbourAmerica/CordobaAmerica/Costa_RicaAmerica/CrestonAmerica/CuiabaAmerica/CuracaoAmerica/DanmarkshavnAmerica/DawsonAmerica/Dawson_CreekAmerica/DenverAmerica/DetroitAmerica/DominicaAmerica/EdmontonAmerica/EirunepeAmerica/El_SalvadorAmerica/EnsenadaAmerica/Fort_WayneAmerica/FortalezaAmerica/Glace_BayAmerica/GodthabAmerica/Goose_BayAmerica/Grand_TurkAmerica/GrenadaAmerica/GuadeloupeAmerica/GuatemalaAmerica/GuayaquilAmerica/GuyanaAmerica/HalifaxAmerica/HavanaAmerica/HermosilloAmerica/Indiana/IndianapolisAmerica/Indiana/KnoxAmerica/Indiana/MarengoAmerica/Indiana/PetersburgAmerica/Indiana/Tell_CityAmerica/Indiana/VevayAmerica/Indiana/VincennesAmerica/Indiana/WinamacAmerica/IndianapolisAmerica/InuvikAmerica/IqaluitAmerica/JamaicaAmerica/JujuyAmerica/JuneauAmerica/Kentucky/LouisvilleAmerica/Kentucky/MonticelloAmerica/Knox_INAmerica/KralendijkAmerica/La_PazAmerica/LimaAmerica/Los_AngelesAmerica/LouisvilleAmerica/Lower_PrincesAmerica/MaceioAmerica/ManaguaAmerica/ManausAmerica/MarigotAmerica/MartiniqueAmerica/MatamorosAmerica/MazatlanAmerica/MendozaAmerica/MenomineeAmerica/MeridaAmerica/MetlakatlaAmerica/Mexico_CityAmerica/MiquelonAmerica/MonctonAmerica/MonterreyAmerica/MontevideoAmerica/MontrealAmerica/MontserratAmerica/NassauAmerica/New_YorkAmerica/NipigonAmerica/NomeAmerica/NoronhaAmerica/North_Dakota/BeulahAmerica/North_Dakota/CenterAmerica/North_Dakota/New_SalemAmerica/OjinagaAmerica/PanamaAmerica/PangnirtungAmerica/ParamariboAmerica/PhoenixAmerica/Port-au-PrinceAmerica/Port_of_SpainAmerica/Porto_AcreAmerica/Porto_VelhoAmerica/Puerto_RicoAmerica/Rainy_RiverAmerica/Rankin_InletAmerica/RecifeAmerica/ReginaAmerica/ResoluteAmerica/Rio_BrancoAmerica/RosarioAmerica/Santa_IsabelAmerica/SantaremAmerica/SantiagoAmerica/Santo_DomingoAmerica/Sao_PauloAmerica/ScoresbysundAmerica/ShiprockAmerica/SitkaAmerica/St_BarthelemyAmerica/St_JohnsAmerica/St_KittsAmerica/St_LuciaAmerica/St_ThomasAmerica/St_VincentAmerica/Swift_CurrentAmerica/TegucigalpaAmerica/ThuleAmerica/Thunder_BayAmerica/TijuanaAmerica/TorontoAmerica/TortolaAmerica/VancouverAmerica/VirginAmerica/WhitehorseAmerica/WinnipegAmerica/YakutatAmerica/Yellowknife

Châu Phi (Africa)

Africa/AbidjanAfrica/AccraAfrica/Addis_AbabaAfrica/AlgiersAfrica/AsmaraAfrica/AsmeraAfrica/BamakoAfrica/BanguiAfrica/BanjulAfrica/BissauAfrica/BlantyreAfrica/BrazzavilleAfrica/BujumburaAfrica/CairoAfrica/CasablancaAfrica/CeutaAfrica/ConakryAfrica/DakarAfrica/Dar_es_SalaamAfrica/DjiboutiAfrica/DoualaAfrica/El_AaiunAfrica/FreetownAfrica/GaboroneAfrica/HarareAfrica/JohannesburgAfrica/JubaAfrica/KampalaAfrica/KhartoumAfrica/KigaliAfrica/KinshasaAfrica/LagosAfrica/LibrevilleAfrica/LomeAfrica/LuandaAfrica/LubumbashiAfrica/LusakaAfrica/MalaboAfrica/MaputoAfrica/MaseruAfrica/MbabaneAfrica/MogadishuAfrica/MonroviaAfrica/NairobiAfrica/NdjamenaAfrica/NiameyAfrica/NouakchottAfrica/OuagadougouAfrica/Porto-NovoAfrica/Sao_TomeAfrica/TimbuktuAfrica/TripoliAfrica/TunisAfrica/Windhoek

Bắc cực (Arctic)

Nam cực (Antarctica)

Antarctica/CaseyAntarctica/DavisAntarctica/DumontDUrvilleAntarctica/MacquarieAntarctica/MawsonAntarctica/McMurdoAntarctica/PalmerAntarctica/RotheraAntarctica/South_PoleAntarctica/SyowaAntarctica/Vostok

Đại Tây Dương (Atlantic)

Atlantic/AzoresAtlantic/BermudaAtlantic/CanaryAtlantic/Cape_VerdeAtlantic/FaeroeAtlantic/FaroeAtlantic/Jan_MayenAtlantic/MadeiraAtlantic/ReykjavikAtlantic/South_GeorgiaAtlantic/St_HelenaAtlantic/Stanley

Châu Úc (Australia)

Australia/ACTAustralia/AdelaideAustralia/BrisbaneAustralia/Broken_HillAustralia/CanberraAustralia/CurrieAustralia/DarwinAustralia/EuclaAustralia/HobartAustralia/LHIAustralia/LindemanAustralia/Lord_HoweAustralia/MelbourneAustralia/NorthAustralia/NSWAustralia/PerthAustralia/QueenslandAustralia/SouthAustralia/SydneyAustralia/TasmaniaAustralia/VictoriaAustralia/WestAustralia/Yancowinna

Châu Á (Asia)

Asia/AdenAsia/AlmatyAsia/AmmanAsia/AnadyrAsia/AqtauAsia/AqtobeAsia/AshgabatAsia/AshkhabadAsia/BaghdadAsia/BahrainAsia/BakuAsia/BangkokAsia/BeirutAsia/BishkekAsia/BruneiAsia/CalcuttaAsia/ChoibalsanAsia/ChongqingAsia/ChungkingAsia/ColomboAsia/DaccaAsia/DamascusAsia/DhakaAsia/DiliAsia/DubaiAsia/DushanbeAsia/GazaAsia/HarbinAsia/HebronAsia/Ho_Chi_MinhAsia/Hong_KongAsia/HovdAsia/IrkutskAsia/IstanbulAsia/JakartaAsia/JayapuraAsia/JerusalemAsia/KabulAsia/KamchatkaAsia/KarachiAsia/KashgarAsia/KathmanduAsia/KatmanduAsia/KhandygaAsia/KolkataAsia/KrasnoyarskAsia/Kuala_LumpurAsia/KuchingAsia/KuwaitAsia/MacaoAsia/MacauAsia/MagadanAsia/MakassarAsia/ManilaAsia/MuscatAsia/NicosiaAsia/NovokuznetskAsia/NovosibirskAsia/OmskAsia/OralAsia/Phnom_PenhAsia/PontianakAsia/PyongyangAsia/QatarAsia/QyzylordaAsia/RangoonAsia/RiyadhAsia/SaigonAsia/SakhalinAsia/SamarkandAsia/SeoulAsia/ShanghaiAsia/SingaporeAsia/TaipeiAsia/TashkentAsia/TbilisiAsia/TehranAsia/Tel_AvivAsia/ThimbuAsia/ThimphuAsia/TokyoAsia/Ujung_PandangAsia/UlaanbaatarAsia/Ulan_BatorAsia/UrumqiAsia/Ust-NeraAsia/VientianeAsia/VladivostokAsia/YakutskAsia/YekaterinburgAsia/Yerevan

Châu Âu (Europe)

Europe/AmsterdamEurope/AndorraEurope/AthensEurope/BelfastEurope/BelgradeEurope/BerlinEurope/BratislavaEurope/BrusselsEurope/BucharestEurope/BudapestEurope/BusingenEurope/ChisinauEurope/CopenhagenEurope/DublinEurope/GibraltarEurope/GuernseyEurope/HelsinkiEurope/Isle_of_ManEurope/IstanbulEurope/JerseyEurope/KaliningradEurope/KievEurope/LisbonEurope/LjubljanaEurope/LondonEurope/LuxembourgEurope/MadridEurope/MaltaEurope/MariehamnEurope/MinskEurope/MonacoEurope/MoscowEurope/NicosiaEurope/OsloEurope/ParisEurope/PodgoricaEurope/PragueEurope/RigaEurope/RomeEurope/SamaraEurope/San_MarinoEurope/SarajevoEurope/SimferopolEurope/SkopjeEurope/SofiaEurope/StockholmEurope/TallinnEurope/TiraneEurope/TiraspolEurope/UzhgorodEurope/VaduzEurope/VaticanEurope/ViennaEurope/VilniusEurope/VolgogradEurope/WarsawEurope/ZagrebEurope/ZaporozhyeEurope/Zurich

Ấn Độ (Indian)

Indian/AntananarivoIndian/ChagosIndian/ChristmasIndian/CocosIndian/ComoroIndian/KerguelenIndian/MaheIndian/MaldivesIndian/MauritiusIndian/MayotteIndian/Reunion

Thái Bình Dương (Pacific)

Pacific/ApiaPacific/AucklandPacific/ChathamPacific/ChuukPacific/EasterPacific/EfatePacific/EnderburyPacific/FakaofoPacific/FijiPacific/FunafutiPacific/GalapagosPacific/GambierPacific/GuadalcanalPacific/GuamPacific/HonoluluPacific/JohnstonPacific/KiritimatiPacific/KosraePacific/KwajaleinPacific/MajuroPacific/MarquesasPacific/MidwayPacific/NauruPacific/NiuePacific/NorfolkPacific/NoumeaPacific/Pago_PagoPacific/PalauPacific/PitcairnPacific/PohnpeiPacific/PonapePacific/Port_MoresbyPacific/RarotongaPacific/SaipanPacific/SamoaPacific/TahitiPacific/TarawaPacific/TongatapuPacific/TrukPacific/WakePacific/WallisPacific/Yap