Parse.com + NSDate:将检索到的解析日期转换为本地时区

Parse.com + NSDate : Convert Parse Date Retrieved to local timezone

我在从 "TODAY" 的解析中下载对象时遇到了一个非常困难的问题。

我正在下载的对象是事件。每个都有一个 startTime 属性 (NSDate) - 它存储事件的日期和时间。通过阅读 Parse 文档和关于 whosebug.com 的其他问题,Parse 中的日期存储为 "UTC" 时区。

当我尝试以下操作时没有得到任何结果:

[query whereKey:@"startTime" greaterThan:[NSDate date]]; 

现在我不关心时间开始时间,只关心以下格式的日期:"MM/dd"

我尝试检索所有对象并将开始时间转换为当地时间,但没有成功。当我进行转换时,开始时间实际上是休息一天(晚一天)。因此,如果事件是 08/29 - 它会打印 08/28。

我尝试将其转换为当地时间,然后比较结果是否等于今天的日期,但仍然没有成功。

NSDate *today = [NSDate date];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MM/dd/"];
[dateFormat Time:@"MM/dd/":[NSTimeZone systemTimeZone]];
NSDateFormatter *todayDateFormat = [[NSDateFormatter alloc] init];
[todayDateFormat setDateFormat:@"MM/dd"];
NSString *todayString = [dateFormat stringFromDate:today];
NSString *activityDateString = [dateFormat stringFromDate:event.startTime];

if ([todayString isEqualToString:activity.activityDate]){
  //add to events array. 
}

如有任何帮助,我们将不胜感激。我花了很多时间试图完成这项工作,但没有成功。

谢谢!

Parse 使用 UTC 时间。因此,将其转换为您的时间应该是:

NSDate *objDate = [parseObject objectAtIndex:indexPath.row];
NSDateFormatter *format = [[NSDateFormatter alloc] init];
[format setDateFormat:@"MM/dd"];
[format setTimeZone:[NSTimeZone systemTimeZone]];
NSString *date = [format stringFromDate:objDate];