angular - Hent tidssonen fra nettleseren/min server for å sette inn i angular2-highcharts
Jeg setter faktisk opp tidssonen manuelt ved å bruke timezoneOffset-funksjonen fra Highcharts API. Jeg er for øyeblikket i GMT+2, så jeg setter den til -2 * 60, men når vi går over til vintertid i oktober, vil oppsettet mitt ikke fungere riktig lenger, så jeg bestemte meg for å bruke tiden fra nettleseren eller serveren i stedet. Jeg vet at vi kunne bruke getTimezoneOffset-funksjonen fra API-en getTimezoneOffset: Function. Problemet er at jeg er oppsatt med TypeScript og Angular 4, hvordan kan jeg gjøre det på en elegant måte? Takk på forhånd.
Her er min faktiske fungerende kode som bruker 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();
}
}
Her er min html:
<chart [options]="options" (load)="saveInstance($event.context)">
</chart>
Svar #1
var dato=new Date(); var tidssone=dato.getTimezoneOffset();
Men jeg synes du bør hente tidssonen fra serveren fordi nettleseren gir tidssonen i henhold til det lokale systemet. Hvis noen endrer det, vil det forårsake problemer for deg.
Svar #2
Du kan enkelt hente tidssoneforskyvningen fra klienten din:
const timeZoneOffset = new Date().getTimezoneOffset();
Du vil få den lokale forskjellen fra UTC i minutter, og deretter kan du bruke den som du ønsker. Avhengig av hvilken type applikasjon du har, bør dette være en bedre tilnærming enn å hardkode tidssonen i de fleste tilfeller når kundene dine er i forskjellige tidssoner.
