嗨我有两个日期的字符串格式
base_date_string = 10-12-01 12:00:00 current_date_string = 10-12-23 10:18:00 以上两个值都在字符串
中我想知道这两个日期之间经过的天数
我尝试使用NSDateFormatters将它们转换为NSDate然后获得差异。 我意识到字符串没有正确转换为NSDate
当我转换为nsdate时,我得到了 base_date ::: 2010-12-01 06:30:00 +0000 current_date :::: 2010-12-23 04:48:19 +0000(时间部分不完美)
我使用的Formatter类是:
NSDateFormatter *formatter1 = [[NSDateFormatter alloc] init];
[formatter1 setDateFormat:@"yy-MM-dd HH:mm:ss"];
NSDate *base_date = [formatter1 dateFromString:@"10-12-01 12:00:00"];
[formatter1 release];
NSDateFormatter *formatter2 = [[NSDateFormatter alloc] init];
[formatter2 setDateFormat:@"yy-MM-dd HH:mm:ss"];
NSDate *current_date = [formatter2 dateFromString:current_date_string];
[formatter2 release];
//从当前日期开始的基础的subrtrcation来获取经过的天数
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *diff = [calendar components:(NSDayCalendarUnit)
fromDate:base_date toDate:current_date options:0];
int date_value = [diff day];
欢迎任何帮助
答案 0 :(得分:1)
NSDate
文档中的30秒:
-[NSDate timeIntervalSinceDate:]
所以使用你问题中的日期......
NSTimeInterval difference = [current_date timeIntervalSinceDate:base_date];
difference = fabs(difference);
NSLog(@"there are %f seconds between %@ and %@", difference, current_date, base_date);
修改强>
好的,所以问题不是日期差异。您正在观察您输入的字符串比您回来的日期早5个半小时。好吧,让我们看看这个。返回的日期是GMT时间(由+0000
表示)。提前5个半小时是印度使用的时区。所以。你在印度吗?如果您是,那么这只需要-setTimezone:
上的NSDateFormatter
。
答案 1 :(得分:0)
您可以使用此功能代码来区分2个日期
-(int)howManyDaysHavePast:(NSDate*)lastDate :(NSDate*)today {
NSDate *startDate = lastDate;
NSDate *endDate = today;
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSGregorianCalendar];
unsigned int unitFlags = NSDayCalendarUnit;
NSDateComponents *components = [gregorian components:unitFlags
fromDate:startDate
toDate:endDate options:0];
[gregorian release];
int days = [components day];
return days;
}
快乐的iCODING ......
答案 2 :(得分:0)
使用以下代码
NSDateFormatter *formatter1 = [[NSDateFormatter alloc] init];
[formatter1 setDateFormat:@"yy-MM-dd HH:mm:ss"];
NSDate *base_date = [formatter1 dateFromString:@"10-12-01 12:00:00"];
NSDate *current_date = [formatter2 dateFromString:current_date_string];
[formatter1 release];
NSTimeInterval difference = [current_date timeIntervalSinceDate:base_date];
然后你会得到秒数的差异。然后你可以按照以下几天获得
float days = difference/86400;
“days”包含current_date与base_date不同的天数。