核心图CPTTimeFormatter修复了xAxis时间间隔

时间:2015-02-28 23:01:14

标签: objective-c core-plot

我正在使用核心图来绘制一个图形,其中xAxis.labelFormatter是一个CPTTimeFormatter。所以我设置了参考日期,并且我的数据很好地沿着xAxis绘制。第一个xAsis标签是“00”(午夜),最后一个xAxis标签是“00”,这很棒,可以根据需要在24小时内显示数据。

但是,我注意到当我将iPhone模拟器时区更改为其他时区时,第一个xAxis标签为“17”,最后一个为“17”。换句话说,xAxis向后移动了7个小时。我需要图表来显示从午夜到午夜(对于特定时区)的数据,无论用户身在何处。

问题是我的情节范围设置不正确,在下面的片段中,'baseInt'不是我想要的时区中的一天的开始..

CPTPlotRange *plotRange = [CPTPlotRange      plotRangeWithLocation:CPTDecimalFromDouble(baseInt) length:CPTDecimalFromDouble(60*60*24)];

我通过以下方式计算出baseInt:

NSTimeInterval baseInt = [[self beginningOfDay:[NSDate date]] timeIntervalSinceDate:[CommonStuff referenceDate]];

这是[NSDate日期]抛出这个。 [CommonStuff referenceDate]没有改变。

如何从referenceDate(固定/不更改)指定NSTimeInterval到特定时区的一天的开始?也许我需要弄清楚时区之间的差异,并在几秒钟内将这个差异添加到baseInt?

FYI我的开始日方法如下:

//return me the date for start of the day
NSCalendar *cal = [NSCalendar currentCalendar];
NSDateComponents *components = [cal components:( NSCalendarUnitMonth | NSCalendarUnitYear | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond | NSCalendarUnitDay ) fromDate:date];

[components setHour:0];
[components setMinute:0];
[components setSecond:0];

return [cal dateFromComponents:components];

1 个答案:

答案 0 :(得分:0)

您回答了自己的问题 - 您需要考虑时区差异。一种方法是在NSCalendar方法中设置-beginningOfDay:的时区。