我正在使用核心图来绘制一个图形,其中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];
答案 0 :(得分:0)
您回答了自己的问题 - 您需要考虑时区差异。一种方法是在NSCalendar
方法中设置-beginningOfDay:
的时区。