NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
dateFormatter.dateFormat = @"yyyy-MM-dd";
NSString *actualDate = [dateFormatter stringFromDate:[NSDate date]];
NSDate *sDate = [dateFormatter dateFromString:[NSString stringWithFormat:@"%@ %@", actualDate, @"01:00:00"]];
NSDate *eDate = [dateFormatter dateFromString:[NSString stringWithFormat:@"%@ %@", actualDate, @"23:59:59"]];
NSDate对象始终返回格式2010-09-10 00:00:00 +01:00。在某个地方,它只是没有占用时间......任何想法?非常感谢。
*更新*
以下代码有效。我按照建议做了并访问了元素并更新了它们。
unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDate *date = [NSDate date];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *comps = [calendar components:unitFlags fromDate:date];
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
dateFormatter.dateFormat = @"yyyy-MM-dd hh:mm:ss";
//update for the start date
[comps setHour:0];
[comps setMinute:0];
[comps setSecond:0];
NSDate *sDate = [calendar dateFromComponents:comps];
//update for the end date
[comps setHour:23];
[comps setMinute:59];
[comps setSecond:59];
NSDate *eDate = [calendar dateFromComponents:comps];
答案 0 :(得分:3)
您应该使用NSCalendar
代替。它允许您解析当前日期并修改其组件。就像你可以用今天的日期初始化它然后设置时间然后从它获得NSDate
。
(旧答案:因为你的格式化程序被配置为只识别日期部分。将时间部分添加到它(即使它的名称是NSDateFormatter,它会愉快地解析日期和时间),你也会看到时间。)
答案 1 :(得分:1)
我今天在寻找同样的事情时发现了这个问题,今天创建了一个具有特定时间的NSDate。提出的解决方案并不是我所需要的,所以我想出了这个:
NSDate * date;
NSString * string, *timestamp;
NSDateFormatter * formatter;
timestamp = @"17:30";
formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setDateFormat: @"yyyy-MM-dd "];
[formatter setTimeZone: [NSTimeZone localTimeZone]];
string = [formatter stringFromDate: [NSDate date]];
string = [string stringByAppendingString: timestamp];
[formatter setDateFormat: @"yyyy-MM-dd HH:mm"];
date = [formatter dateFromString: string];