it-swarm.it

aggiungere o sottrarre la differenza di fuso orario a Data javascript

Dai un'occhiata al codice qui sotto. Qual è l'approccio migliore per aggiungere o sottrarre le differenze di fuso orario alla variabile targetTime di seguito. I valori del fuso orario GMT provengono dal DB in questo formato: 1.00 per ora di Londra, -8.00 per tempo Pasific e così via.

Il codice si presenta così:

date = "September 21, 2011 00:00:00";
targetTime = new Date(date);
24
halliewuud

Puoi utilizzare Date.getTimezoneOffset che restituisce l'offset locale da GMT in minuti. Si noti che restituisce il valore con il segno opposto che ci si potrebbe aspettare. Quindi GMT-5 è 300 e GMT + 1 è -60.

var date = "September 21, 2011 00:00:00";
var targetTime = new Date(date);
var timeZoneFromDB = -7.00; //time zone value from database
//get the timezone offset from local time in minutes
var tzDifference = timeZoneFromDB * 60 + targetTime.getTimezoneOffset();
//convert the offset to milliseconds, add to targetTime, and make a new Date
var offsetTime = new Date(targetTime.getTime() + tzDifference * 60 * 1000);
48
alexp

Semplice funzione che funziona per me:

adjustForTimezone(date:Date):Date{
    var timeOffsetInMS:number = date.getTimezoneOffset() * 60000;
    date.setTime(date.getTime() - timeOffsetInMS);
    return date
}
9
user2875462

Se hai bisogno di compensare il fuso orario ti consiglio il seguente frammento:

var dt = new Date('2018-07-05')
dt.setMinutes(dt.getMinutes() + dt.getTimezoneOffset())
console.log(dt)
0
Marcos Lima