ค้นหาเว็บไซต์

typescript - Javascript: ฉันจะทำอย่างไรให้สตริงของ locale แสดงเขตเวลาของเบราว์เซอร์ในเครื่องและไม่ใช่ UTC บนฝั่งหน้าเว็บ?


ฉันมีวัตถุ dateTime ที่ฉันกำลังใช้สะท้อนสถานะของรายการ ด้านล่างนี้คือโค้ดที่ฉันมีสำหรับวัตถุนั้น:

let status = new Date(Date.parse(dateTime)).toLocaleString('en-US', {year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute:'2-digit'}))

ปัจจุบันสถานะส่งคืน ไม่คำนึงถึงโซนเวลา: 19/10/2022, 22:13 น.

ฉันอยู่ในเขตเวลา US Central Time เมื่อฉันใช้ console.log

new Date(Date.parse(dateTime))

ฉันได้รับ วันพุธที่ 19 ตุลาคม 2022 22:13:00 GMT-0500 (เวลาฤดูร้อนกลาง).

อย่างไรก็ตามเมื่อฉันเปลี่ยนเวลาคอมพิวเตอร์ของฉันเป็นเวลาตามตะวันออกของสหรัฐอเมริกา ฉันจะได้: Wed Oct 19 2022 22:13:00 GMT-0400 (Eastern Daylight Time).

นี่ไม่ถูกต้อง ผมคาดหวังว่าเวลา Eastern Time จะแสดงเป็น 11:13 PM หรือ 23:13:00 ผมควรแก้ไขโค้ดอย่างไรเพื่อให้แสดงเวลาท้องถิ่นจริงของเบราว์เซอร์

คำตอบ #1

จริงๆ แล้วฉันหาวิธีนี้ออกด้วยความช่วยเหลือจากการสาธิตนี้

ตอนนี้โค้ดของฉันอ่านได้ว่า:

let dateTime = '2022-10-19T22:13:17';
let dateInUTC = new Date(Date.parse(dateTime)).toLocaleString() + ' UTC';
let localDate = new Date(dateInUTC);
let status = localDate.toLocaleString('en-US', {
  year: 'numeric',
  month: '2-digit',
  day: '2-digit',
  hour: '2-digit',
  minute: '2-digit'
});

console.log(status);

ถ้าฉันใช้ console.log แสดงสถานะ ฉันจะได้ 10/19/2022, 05:13 PM หากฉันเปลี่ยนเขตเวลาของคอมพิวเตอร์เป็น Eastern ฉันจะได้ 10/19/2022, 06:13 PM ซึ่งนี่คือผลลัพธ์ที่ต้องการ