核心图 CPTTimeFormatter 固定 xAxis 时间间隔
Core plot CPTTimeFormatter fixed xAxis time interval
我正在使用 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] 没有改变。
如何指定从参考日期(fixed/not 更改)到特定时区 一天的开始的 NSTimeInterval?也许我需要计算出时区之间的差异并将该差异以秒为单位添加到 baseInt?
仅供参考,我的一天开始的方法如下:
//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];
您自己回答了问题——您需要考虑时区差异。一种方法是在 -beginningOfDay:
方法中设置 NSCalendar
的时区。
我正在使用 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] 没有改变。
如何指定从参考日期(fixed/not 更改)到特定时区 一天的开始的 NSTimeInterval?也许我需要计算出时区之间的差异并将该差异以秒为单位添加到 baseInt?
仅供参考,我的一天开始的方法如下:
//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];
您自己回答了问题——您需要考虑时区差异。一种方法是在 -beginningOfDay:
方法中设置 NSCalendar
的时区。