วิธีแปลง Javascript UTC Date เป็นเวลาตะวันออก
ผู้คนมักแสดงเขตเวลาจากทั่วโลกว่าเป็นค่าชดเชยบวกหรือลบจากเวลาสากลเชิงพิกัดหรือ UTC UTC เป็นมาตรฐานเวลาที่อิงตามเวลาปรมาณูสากล และในการใช้งานทั่วไปถือว่าเทียบเท่ากับ Greenwich Mean Time (GMT) การใช้ภาษาสคริปต์ JavaScript คุณสามารถแปลงเวลา UTC เป็นเวลาตะวันออกได้อย่างง่ายดาย
ขั้นตอนที่ 1
สร้างอินสแตนซ์อ็อบเจ็กต์ Date ของ JavaScript โดยเรียกคอนสตรัคเตอร์ Date() ส่งผ่านเป็นพารามิเตอร์เดียวของเมธอด UTC() (เช่น สำหรับเที่ยงคืนของวันที่ 1 มกราคม 2000 เวลา UTC "var fooDay = new Date(Date.UTC(2000) ,0,1,0,0,0,0))")) UTC() เป็นวิธีการแบบคงที่ที่ส่งคืนจำนวนมิลลิวินาทีที่ผ่านไปตั้งแต่เที่ยงคืนของวันที่ 1 มกราคม 1970 เวลา UTC ไวยากรณ์ของมันคือ Date.UTC(ปี, เดือน, วัน, ชั่วโมง, นาที, วินาที, มิลลิวินาที) โดยที่อาร์กิวเมนต์ทั้งหมดแสดงเป็นตัวเลข จำเป็นต้องใช้อาร์กิวเมนต์สามตัวแรกในขณะที่อาร์กิวเมนต์ที่เหลือเป็นทางเลือก ออบเจ็กต์ Date นี้แสดงเวลาที่คุณต้องการแปลง โดยแสดงเป็นเวลาท้องถิ่นของคุณ
ขั้นตอนที่ 2
คำนวณความแตกต่างของเวลาเป็นมิลลิวินาทีระหว่างเวลา UTC กับเวลาท้องถิ่นของคุณและเก็บผลลัพธ์ไว้ในตัวแปร ในการคำนวณออฟเซ็ตในพื้นที่ของคุณ ให้เรียกเมธอด getTimezoneOffset() ของออบเจ็กต์ Date ของคุณ แล้วคูณค่าที่ส่งคืนมาคูณด้วย 60,000 (เช่น “var localOffset = fooDay.getTimezoneOffset() * 60000”) คุณคูณด้วย 60,000 เพื่อแปลงนาทีเป็นมิลลิวินาที (1,000 มิลลิวินาทีในหนึ่งวินาที * 60 วินาทีในหนึ่งนาที = 60,000 มิลลิวินาที)
ขั้นตอนที่ 3
รับค่า UTC ในหน่วยมิลลิวินาทีของออบเจ็กต์ Date ของคุณโดยเรียกใช้เมธอด getTime() และเพิ่มค่าที่ส่งคืนไปยังออฟเซ็ตในเครื่องของคุณ (เช่น “var fooUTC = fooDay.getTime() + localOffset”)
ขั้นตอนที่ 4
สร้างค่าคงที่เพื่อแสดงออฟเซ็ตโซนเวลาตะวันออกในหน่วยมิลลิวินาที (เช่น “const EAST = 3600000 * -5”) คุณคูณด้วย 3,600,000 เพื่อแปลงชั่วโมงเป็นมิลลิวินาที (1,000 มิลลิวินาทีในหนึ่งวินาที * 60 วินาทีในหนึ่งนาที * 60 นาทีในหนึ่งชั่วโมง = 3,600,000 มิลลิวินาที) และคุณคูณด้วย -5 เนื่องจากเวลาตะวันออกช้ากว่าเวลา UTC ห้าชั่วโมง
สร้างอินสแตนซ์อ็อบเจกต์ Date อื่นโดยเรียกคอนสตรัคเตอร์ Date() ส่งผ่านไปยังออบเจกต์ Date() ซึ่งเป็นพารามิเตอร์เดียวของผลรวมของค่า UTC ของออบเจกต์ Date แรกและค่าคงที่ออฟเซ็ตโซนเวลาตะวันออกของคุณ (เช่น “var barDay = new Date(fooUTC + EAST )”) ออบเจ็กต์ Date นี้แสดงถึงวันที่ UTC เดิมของคุณ ซึ่งขณะนี้ถูกแปลงเป็นเวลาตะวันออก