我有以下代码将字符串转换为日期。是否有可能将时间设置为" 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];
答案 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]];