angular - Obtener la zona horaria de mi navegador/servidor para inyectarla en angular2-highcharts
En realidad, configuro la zona horaria manualmente usando la función timezoneOffset proveniente de la API de Highcharts, actualmente estoy en GMT+2, así que la configuro a -2 * 60, pero cuando cambiemos la hora en octubre, mi configuración dejará de funcionar correctamente, así que decidí tomar la hora de mi navegador o del servidor en su lugar. Sé que podríamos usar la función getTimezoneOffset proveniente de la API getTimezoneOffset: Function. El problema es que estoy configurado con TypeScript y Angular 4, ¿cómo podría hacerlo de una manera elegante? Gracias de antemano.
Aquí está mi código real que funciona usando timezoneOffset:
constructor(public userService3: UserService3) {
const Highcharts = require('highcharts');
Highcharts.setOptions({
global: {
timezoneOffset: -2 * 60
}
});
this.options = {
title : { text : '' },
chart: { type: 'area'},
legend: { enabled: false },
credits: { enabled: false },
xAxis: { type: 'datetime',
startOnTick: false,
endOnTick: false,
tickInterval: 36e5 * 2, // two hours
},
yAxis: { min: 0,
max: 100 },
plotOptions: {
series: {
color: '#648e59',
fillOpacity: 0.8,
fillColor: '#648e59',
pointInterval: 36e5 * 2 // two hours
}
},
series: [{
name: 'Someone1',
data: [],
}]
};
}
saveInstance(chartInstance) {
this.chart = chartInstance;
console.log(chartInstance);
}
public ngOnInit () {
this.dataSubscription = this.userService3.getData().subscribe((data)
=> {
this.options.series[0].data = data.data.operating_details;
console.log(data);
});
}
ngOnDestroy() {
if (this.dataSubscription){
this.dataSubscription.unsubscribe();
}
}
Aquí está mi HTML:
<chart [options]="options" (load)="saveInstance($event.context)">
</chart>
Respuesta #1
var fecha=new Date(); var zonaHoraria=fecha.getTimezoneOffset();
Pero creo que deberías obtener la zona horaria del servidor porque el navegador da la zona horaria según el sistema local; si alguien la cambia, te causará problemas.
Respuesta #2
Puedes obtener simplemente el desfase horario desde tu cliente:
const timeZoneOffset = new Date().getTimezoneOffset();
Obtendrás la diferencia local con respecto a UTC en minutos, luego úsala como desees. Dependiendo del tipo de aplicación, este debería ser un enfoque mejor que codificar la zona horaria de manera fija en la mayoría de los casos cuando tus clientes están en diferentes zonas horarias.
