0

我正在一个 react-native 项目中工作并使用矩库。我在将时间(GMT 5:30 IST)转换为 AM/PM 时遇到问题。它增加了当地时间 5:30 小时。例如。从数据库时间下午 3:00 开始。从 new Date() => time 转换为Wed Jun 23 2021 15:00:00 GMT+0530(印度标准时间)并在我需要的字段中传递后。当我需要时,我再次将此 GMT 时间转换为 Am/PM。它显示 8:30 PM 而不是 3:00 PM。

这是代码:

var scheduledDeparture = Wed Jun 23 2021 15:00:00 GMT+0530 (India Standard Time)
scheduledDeparture_Time: new Date(ScheduledDeparture), 
let finalTime = moment.utc(leavedata.scheduledDeparture_Time).format('hh:mm a').replace(/GMT.*/g,"")
console.log("finalTime ",finalTime). // 08:30PM

为什么格林威治标准时间在当前时间增加 5:30 以及如何克服它?

4

1 回答 1

1

您需要moment-timezone被包含,然后您可以通过使用utcOffset方法执行以下操作

let str = '2021-06-23T15:40+01:00';
let date = moment(str).utcOffset(str)
console.log(date.format('DD/MM/YYYY HH:mm'))

如果您正在使用Date对象,则可以执行以下操作:

 let scheduledDeparture_Time = new Date()
 console.log(scheduledDeparture_Time.toString(), scheduledDeparture_Time.toGMTString())
 let dt2 = moment(scheduledDeparture_Time)
  console.log(dt2.format('DD/MM/YYYY HH:mm'))

如果您有规定的字符串并且无论时区如何都需要保留时间,那么只需使用substring然后应用moment

 let scheduledDeparture ='Wed Jun 23 2021 15:00:00 GMT+0530 (India Standard Time)'
 let scheduledDeparture_Time = new Date(scheduledDeparture.substring(0, 24))
 let dt2 = moment(scheduledDeparture_Time)
  console.log(dt2.format('DD/MM/YYYY HH:mm'))

小提琴

于 2021-06-23T07:10:24.280 回答