【发布时间】:2013-05-05 14:16:31
【问题描述】:
我需要 NSDate 格式的当天的开始和结束,因为我有一个 nspredicate 来获取此范围之间的数据。所以我写了一个函数来查找当天的开始,就是这样
NSDate *now = [NSDate date];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit) fromDate:now];
[components setHour:0];
[components setMinute:0];
[components setSecond:0];
NSDate *start = [calendar dateFromComponents:components];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *strFromDate = [formatter stringFromDate:start];
当我尝试 nslog strFromDate 时,它会显示当天的确切开始时间,如下所示 2013-05-05 00:00:00 +0000 但我需要 nsdate 格式的,所以当我尝试将它转换成这样的 nsdate 时
NSDateFormatter * dateFormat = [[NSDateFormatter alloc]init];
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *dateStr = [[NSDate alloc]init];
dateStr = [dateFormat dateFromString:strFromDate];
当我 nslog 时,结果变为 2013-05-05 18:30:00 +0000。我尝试了很多代码,当我尝试以 nsstring 格式打印它时,我得到了想要的结果,但不知道 nsdate 出了什么问题。如果有人可以指导我。提前致谢
【问题讨论】:
-
[[NSDate alloc]init]这将为您提供现在的日期和时间 -
“NSDate 格式”是什么意思???
NSDate *start是一个日期。为什么要使用 NSDateFormatter 和字符串? -
@matt 是的,但是当我尝试 nslog NSDate *start 时,我没有将时间设置为零,我的意思是 00:00:00
-
"当我尝试 nslog NSDate
start时,我得到的时间是 18:30:00 +0000" 因为那是一天开始的时间。+0000是伦敦。您现在是印度时间,比印度时间早 5:30。 -
这一直出现。人们不能先谷歌吗? stackoverflow.com/questions/9442126/…