使用NSDateformatter格式化日期时设置时间

时间:2014-10-08 11:32:46

标签: ios iphone

我有以下代码将字符串转换为日期。是否有可能将时间设置为" 00:00:00"而不是现在的时间?

NSDateFormatter *dateformat = [[NSDateFormatter alloc] init];
[dateformat setDateFormat:@"yyyy-MM-dd"];
NSString *str = @"2014-08-08";
NSDate *dt = [dateformat dateFromString:str];

这给了dt as" 2014-08-08 15:20:00 + 0000"因为我在15:20做了手术。

编辑:我使用此日期稍后将其转换为整数以将其存储在数据库中:

int t = [dt timeIntervalSince1970];

2 个答案:

答案 0 :(得分:1)

如果您使用NSLog显示日期dt,您将看到日期描述方法提供的内容。如果您希望以适合您的特定方式查看日期,请使用NSDateFormatter格式化日期。

示例:

NSDateFormatter *dateformat = [[NSDateFormatter alloc] init];
[dateformat setDateFormat:@"yyyy-MM-dd"];
NSString *str = @"2014-08-08";
NSDate *dt = [dateformat dateFromString:str];

NSDateFormatter *displayDateformat = [[NSDateFormatter alloc] init];
[displayDateformat setDateFormat:@"yyyy-MM-dd"];
NSString *displayDateString = [displayDateformat stringFromDate:dt];
NSLog(@"displayDateString: %@", displayDateString);

输出:

  

2014-08-08

根据Apple文档注意:"此方法返回相对于绝对参考日期的时间值 - 格林威治标准时间2001年1月1日的第一个瞬间。"

答案 1 :(得分:1)

一个好的做法是使用NSDateComponents

NSDate *yourDate = [NSDate date];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *dateComponents = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:yourDate];
[calendar setTimeZone:[NSTimeZone localTimeZone]];
// Set the time components manually
[dateComponents setHour:0];
[dateComponents setMinute:0];
[dateComponents setSecond:0];            

yourDate = [calendar dateFromComponents:dateComponents];

<强>更新

iOS8:

[[NSCalendar currentCalendar] startOfDayForDate:[NSDate date]];