Managing Timezone Data

ຄອນເທັນເນີທີ່ສ້າງພາຍໃນ Huk-Com Cloud PaaS ໂດຍເລີ່ມຕົ້ນໃຊ້ເຂດເວລາ UTC ແນວໃດກໍຕາມທ່ານສາມາດປ່ຽນເຂດເວລາທີ່ທ່ານຕ້ອງການໄດ້ຢ່າງງ່າຍດາຍໂດຍເພີ່ມ add-on TimeZone Change ທ່ານສາມາດເຮັດຕາມຂັ້ນຕອນທີ່ລະບຸໄວ້ເພື່ອສະລັບເຂດເວລາໃນອິນສແຕນຂອງທ່ານ

ອີກວິທີໜຶ່ງທ່ານສາມາດປ່ຽນແປງໄດ້ດ້ວຍຕົນເອງ ຕົວຢ່າງເຊັ່ນ Java ແລະ PHP application servers ທີ່ມາພ້ອມກັບແພັກເກັດເຂດເວລາພິເສດເຊິ່ງລວບລວມຂໍ້ມູນກ່ຽວກັບປະຫວັດຂອງເວລາທ້ອງຖິ່ນໃນສະຖານທີ່ຕ່າງໆທົ່ວໂລກ ແລະ ກົດເຂດເວລາປະຈຸບັນ ຂໍ້ມູນນີ້ຈໍາເປັນສໍາລັບຊັອບແວທີ່ເຮັດວຽກພາຍໃນຄອນເທັນເນີ ແລະ ໄດ້ຮັບການອັບເດດຢ່າງສະໝໍ່າສະເໝີພາຍໃນເຊີບເວີທີ່ກ່ຽວຂ້ອງ

ນອກຈາກນັ້ນທ່ານສາມາດອັບເດດ timezone ດ້ວຍຕົນເອງໄດ້ທັນທີຫາກຈໍາເປັນ ຫຼື ປ່ຽນ TZ ທີ່ໃຊ້ຢູ່ປະຈຸບັນຕາມຕໍາແໜ່ງທີ່ຕ້ອງການ ດັ່ງນັ້ນດ້ານລຸ່ມເຮົາຈະອະທິບາຍກ່ຽວກັບການຈັດການຂໍ້ມູນ timezone ສໍາລັບແອັບພຼິເຄຊັນເຊີບເວີຂອງໂປຣແກຣມພາສາທີ່ກ່າວໃນເບື້ອງຕົ້ນ:

TimeZone Add-On

ໂປຣແກຣມເສີມ TimeZone Change ສາມາດຕິດຕັ້ງໃນ environment ຂອງທ່ານໂໂດຍຈະປ່ຽນເຂດເວລາສໍາລັບຄອນເທັນເນີທັງໝົດໃນເວລາບໍ່ເທົ່າໃດນາທີ

1. ກ່ອນດໍາເນີນການຕິດຕັ້ງ ໃຫ້ກວດເຂດເວລາໃນຄອນເທັນເນີຂອງທ່ານໂດຍໃຊ້ຄໍາສັ່ງdate

ຢ່າງທີ່ທ່ານເຫັນຄ່າເລີ່ມຕົ້ນຄອນເທັນເນີຈະໃຊ້ UTC zone

2. ໄປທີ່ TimeZone Change add-on repository ພາຍໃນ Huk-Com Cloud JPS Collection ທີ່ GitHub ຄັດລອກລິງໄປທີ່ໄຟລ manifest.jps ແລະນໍາເຂົ້າຜ່ານແດຊບອດ: https://github.com/jelastic-jps/time-zone-change/blob/master/manifest.jps

ເຄັດລັບ: ຂຶ້ນຢູ່ກັບການຕັ້ງຄ່າຂອງຜູ້ໃຫ້ບໍລິການໂຮສຕິ້ງໂດຍສະເພາະ add-on ສາມາດນໍາໃຊ້ໄດ້ຜ່ານ Marketplace


3. ພາຍໃນເຟຣມທີ່ເປີດຂຶ້ນ ເລືອກ Environment ທີ່ທ່ານຕ້ອງການປ່ຽນເຂດເວລາ ແລະ ພິມຊື່ເຂດເວລາທີ່ຕ້ອງການ (ລາຍການ time zones)

ຄລິກ Install ເພື່ອໃຊ້ການປ່ຽນແປງ

4. ຫຼັງຈາກຕິດຕັ້ງ add-on ແລ້ວ ທ່ານສາມາດກວດເບິ່ງການປ່ຽນແປງເຂດເວລາໂດຍພິມຄໍາສັ່ງ date

ກົດຂອງ Timezone ສໍາລັບ Java

ກົດຂອງເຂດເວລາພາຍໃນ Java ການປະມວນຜົນໂໜດຈະສົ່ງໂດຍ TZdata package ໂດຍສະເພາະເຊິ່ງປະກອບດ້ວຍຄອນເທັນເນີທີ່ເໝາະສົມແຕ່ລະລາຍການ ທ່ານສາມາດເຮັດຕາມຄໍາແນະນໍາດ້ານລຸ່ມ:

  • ການອັບເດດຂໍ້ມູນ Timezone
  • ການປ່ຽນ Timezone ປະຈຸບັນ
ການອັບເດດຂໍ້ມູນ Timezone

ເຖິງແມ່ນວ່າຄວາມຈິງແລ້ວ TZdata package edition ໃໝ່ຫຼ້າສຸດຈະລວມເຂົ້າກັບໂໜດໃນລະຫວ່າງການສ້າງແຕ່ບາງຄັ້ງກໍຫຼ້າສະໄໝເນື່ອງຈາກການປ່ຽນແປງຂໍ້ມູນພາຍໃນເປັນໄລຍະ ດັ່ງນັ້ນຄອນເທັນເນີເກົ່າອາດຈະຕ້ອງມີການອັບເດດທີ່ສອດຄ່ອງກັນເປັນບາງຄັ້ງຄາວ(ໂດຍສະເພາະເພື່ອທີ່ຈະບໍ່ຕ້ອງສ້າງໃໝ່ທຸກເທື່ອທີ່ຕ້ອງການ) ດ້ວຍເຫດນີ້ຈຶ່ງໃຊ້ເຄື່ອງມື TZUpdater ແບບຝັງພິເສດທີ່ມີວັດຖຸປະສົງເພື່ອໃຫ້ຂໍ້ມູນເຂດເວລາຂອງທ່ານຖືກຕ້ອງ ແລະ ເປັນປະຈຸບັນເຊິ່ງຂ້ອນຂ້າງນໍາໃຊ້ງ່າຍ ແລະ ສາມາດຣັນໄດ້ພຽງໃຊ້ຄໍາສັ່ງວັກດຽວ:

1. ເຊື່ອມຕໍ່ Java environment ຜ່ານ SSH ເຊັ່ນການໃຊ້ Web SSH ທີ່ໜ້າແດຊບອດ

2. ທ່ານສາມາດກວດສອບເວີຊັ່ນ TZdata ທີ່ໃຊ້ຢູ່ປະຈຸບັນໄດ້ໂດຍຣັນຄໍາສັ່ງຕໍ່ໄປນີ້:

java -jar /usr/java/utils/tzupdater.jar -V

3. ນອກຈາກນີ້ທ່ານຍັງສາມາດອັບເດດຂໍ້ມູນ timezone ໂດຍໃຊ້ເຄື່ອງມື TZUpdater

java -jar /usr/java/utils/tzupdater.jar -u

ການປ່ຽນ Timezone

ໃນຫົວຂໍ້ນີ້ມາເບິ່ງການປ່ຽນແປງເຂດເວລາ ເຊິ່ງໃນຕົວຢ່າງນີ້ເຮົາຈະໃຊ້ Tomcat 10.0.12 server

1. ຕັ້ງຄ່າ timestamp ເວລາປະຈຸບັນໃຫ້ສະແດງທີ່ໜ້າເລີ່ມຕົ້ນຂອງເຊີບເວີ-ເພື່ອໃຫ້ແນ່ໃຈວ່າການຕັ້ງຄ່າ timezone ໃໝ່ໄດ້ຖືກປັບໃຊ້ສໍາເລັດ

ໂດຍການວາງໂຄດດ້ານລຸ່ມແທນຄ່າເລີ່ມຕົ້ນທີ່ໄຟລ /opt/tomcat/webapps/ROOT/index.jsp ((ວິທີທີ່ງ່າຍທີ່ສຸດຄືການໃຊ້ File Managerພາຍໃນແພຼັດຟອມ)

<%@page import="java.util.*"%>
<html>
   <head>
       <title>TZ Page</title>
   </head>
   <body>
       <%=new Date(System.currentTimeMillis()).toString()%>
   </body>
</html>

2. ບັນທຶກການປ່ຽນແປງ ແລະ ເປີດບຣາວເຊີໃນ environment ຂອງທ່ານໂດຍຄລິກທີ່ປຸ່ມ Open in Browser

3. ການປ່ຽນເຂດເວລາແທ້ສໍາລັບເຊີບເວີໂດຍສະເພາະ ທ່ານສາມາດເຮັດໄດ້ຕາມຂັ້ນຕອນນີ້

  • ສໍາລັບ Tomcat, TomEE, Payara, Spring Boot ແລະ Jetty
    ສະລັບໄປທີ່ໜ້າການກໍານົດຄ່າໄຟລ variables.conf ແລະ ເພີ່ມຕົວແປ -Duser.timezone ພ້ອມກັບຄ່າ zone ທີ່ຕ້ອງການເຊັ່ນ -Duser.timezone=Asia/Laos

ເພີ່ມເຕີມ: ຕໍາແໜ໋ງທີ່ຢູ່ຂອງໄຟລອາດຈະແຕກຕ່າງກັນຂຶ້ນຢູ່ກັບແອັບພຼິເຄຊັນເຊີບເວີ:
– Tomcat 7, 8, 9, TomEE – /opt/tomcat/conf/variables.conf
– Jetty 9 – /opt/jetty/etc/variables.conf
– Payara 4, 5 – /opt/payara/glassfish/domains/domain1/config/variables.conf
– Spring Boot 1, 2 – /opt/shared/conf/variables.conf

  • ສໍາລັບ GrassFish ເຂົ້າເຖິງຜ່ານ GF admin panel ໄປທີ່ສ່ວນ Configurations > gfcluster-config (or server-config for GF 4) > JVM Settings > JVM Options ແລະ ຄລິກປຸ່ມ Add JVM Option ວາງສະຕຣິງທີ່ກ່ຽວຂ້ອງ (ເຊັ່ນ -Duser.timezone=Asia/Laos) ໃນຊ່ອງປ້ອນຂໍ້ມູນທີ່ປະກົດ
  • ສໍາລັບ Wildfly ໃຫ້ສະລັບໄປທີ່ໄຟລ /opt/wildfly/bin/standalone.conf ຫຼື ຖ້າຫາກເຊີບເວີປັບຂະໜາດແບບ horizontal ໃຫ້ໄປທີ່ /opt/wildfly/bin/domain.conf ແລະ ປະກາດຕົວແປທີ່ກ່ຽວຂ້ອງໂດຍໃຊ້ຮູບແບບຕໍ່ໄປນີ້: export JAVA_OPTS=”-Duser.timezone=Asia/Laos”

4. ບັນທຶກການປ່ຽນແປງ ແລະ Restart ເພື່ອໃຊ້ການຕັ້ງຄ່າໃໝ່ ຈາກນັ້ນ Refresh ໜ້າ timezone ຫຼື ຄລິກ Open in Browser ອີກຄັ້ງເພື່ອເບິ່ງເວລາທ້ອງຖິ່ນທີ່ອັບເດດ

ດ້ວຍວິທີນີ້ ທ່ານສາມາດຕັ້ງຄ່າຕໍາແໜ່ງເວລາທີ່ຕ້ອງການສໍາລັບເຊີບເວີຂອງທ່ານໂດຍບໍ່ມີບັນຫາພາຍໃນບໍ່ເທົ່າໃດນາທີ

ກົດຂອງ Timezone ສໍາລັບ PHP

ການຈັດການຕັ້ງຄ່າ timezone ສໍາລັບ PHP ແອັບພຼິເຄຊັນເຊີບເວີ(Apache ແລະ NGINX) ຈະດໍາເນີນການໃນສ່ວນ[date] ຂອງໄຟລການກໍານົດຄ່າຫຼັກ php.ini.

ການເຂົ້າເຖິງໄຟລທີ່ຄລິດປຸ່ມ Config ຖັດຈາກໂໜດທີ່ຕ້ອງການ ແລະ ເຂົ້າໄປທີ່ໄຟລ /etc/php.ini

ໃນສ່ວນນີ້ຈະສາມາດເຮັດໄດ້ສອງສ່ວນຄື:

  • ຮັບຂໍ້ມູນເຂດເວລາຫຼ້າສຸດ
  • ຕັ້ງຄ່າເຂດເວລາດ້ວຍຕົນເອງ

ການກວດສອບ Timezone Data

ການຕັ້ງຄ່າແບບທໍາອິດອະນຸຍາດໃຫ້ທ່ານໃຊ້ Timezone Database ອື່ນໆພາຍນອກໄດ້ (ກ່າວຄື – Olson) ໃນກໍລະນີທີ່ຖານຂໍ້ມູນພາຍໃນຫຼ້າສະໄໝ

ໂດຍການ uncomment ລົບສັນຍະລັກ (;) ວັກທີ 266 ແລະກົດປຸ່ມ Save ເພື່ອບັນທຶກການປ່ຽນແປງ ຈາກນັ້ນ Restart ແອັບເຊີບເວີຂອງທ່ານ

ຕອນນີ້ທ່ານສາມາດຄລິກ Open in browser ແລະ ເລື່ອນໄປທີ່ສ່ວນ date ໃນໜ໊າ php.info ທີ່ເປີດຂຶ້ນທ່ານຈະເຫັນ timezone package ເວີຊັ່ນຫຼ້າສຸດພ້ອມລະບຸການໃຊ້ DB ພາຍນອກ

ການປ່ຽນ Timezone

ຕົວເລືອກທີສອງໃນສ່ວນຂອງ [date] ມີໄວ້ສໍາລັບການກໍານົດຕໍາແໜ່ງເຂດເວລາປະຈຸບັນຂອງໂໜດນັ້ນໆ(ໂດຍຄ່າເລີ່ມຕົ້ນຈະຊີ້ໄປທີ່ UTC zone) ຕົວຢ່າງດ້ານລຸ່ມເຮົາຈະແກ້ໄຂຄ່າເລີ່ມຕົ້ນໜ້າທໍາອິດຂອງເຊີບເວີທີ່ໄຟລ/var/www/webroot/ROOT/index.phpດ້ວຍໂຄດຕໍ່ໄປນີ້:

<?php
echo date("h:i:sa");
?>

ຈາກນັ້ນກົດປຸ່ມ Save ອັບເດດໄຟລແລ້ວ Open in Browser ທ່ານຈະເຫັນຜົນລັບເວລາ

ກັບໄປທີ່ Huk-Com Cloud Dashboard ແລະ ລະບຸເຂດເວລາ ທີ່ຕ້ອງການເປັນຄ່າສໍາລັບພາຣາມິເຕີ date.timezone ພາຍໃນໄຟລ php.ini ເຊັ່ນ (Asia/Laos)

ບັນທຶກການກໍານົດຄ່າໃໝ່ອີກຄັ້ງ ແລະ Restart PHP compute node ແລະ refresh ໜ້າສະແດງເວລາປະຈຸບັນອີກຄັ້ງ

ພຽງເທົ່ານີ້ທ່ານຈະເຫັນ timezone ທີ່ປ່ຽນແປງສໍາເລັດແລ້ວ ແລະ ຕອນນີ້ສອດຕ່ອງກັບຕໍາແໜ່ງທີ່ຕ້ອງການແລ້ວ