Ed *_*rty 7 iphone cocoa-touch objective-c
我试图[[NSCalendar currentCalendar] ordinalityOfUnit:NSDayCalendarUnit inUnit:NSEraCalendarUnit forDate:date]
在两个不同的日期使用,看看它们是否在同一天落下.但是,如果我的时区不同(例如,在德国的某个地方),即使日期明显相同,返回的日期也不同.如果我使用NSYearCalendarUnit
而不是NSEraCalendarUnit
在相同的日期,返回的值是相同的.
使用的唯一问题NSYearCalendarUnit
是它在不同年份的同一天返回相同的值,并且如果它们落在不同年份,则确定两个日期之间的天数并不简单.
任何想法有什么问题,或者如何更容易地确定两个日期是在同一天,还是确定它们之间的天数?
例:
[NSTimeZone setDefaultTimeZone:[NSTimeZone timeZoneWithName:@"Europe/Berlin"]];
NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *date1 = [NSDate dateWithTimeIntervalSinceReferenceDate:300751200];
NSDate *date2 = [NSDate dateWithTimeIntervalSinceReferenceDate:300836062.388569];
NSLog(@"\nDate 1: %@\nDate 2: %@",date1,date2);
/*Output:
Date 1: 2010-07-14 00:00:00 +0200
Date 2: 2010-07-14 23:34:22 +0200
*/
int day1 = [cal ordinalityOfUnit:NSDayCalendarUnit inUnit:NSEraCalendarUnit
forDate:date1];
int day2 = [cal ordinalityOfUnit:NSDayCalendarUnit inUnit:NSEraCalendarUnit
forDate:date2];
NSLog(@"\nDay 1: %i\nDay 2: %i",day1,day2);
/*Output:
Day 1: 733966
Day 2: 733967
*/
day1 = [cal ordinalityOfUnit:NSDayCalendarUnit inUnit:NSYearCalendarUnit
forDate:date1];
day2 = [cal ordinalityOfUnit:NSDayCalendarUnit inUnit:NSYearCalendarUnit
forDate:date2];
NSLog(@"\nDay 1:%i\nDay 2: %i",day1,day2);
/*Output:
Day 1: 195
Day 2: 195
*/
Run Code Online (Sandbox Code Playgroud)
小智 2
\n\n在大多数情况下,序数与单位的分解值不同。通常返回值是 1 或更大。例如,时间 00:45 位于一天中的第一个小时,对于单位“小时”和“天”,结果将为 1。例外情况是按月计算,对于第一个小时之前的天数返回 0包含该日期的月份中的周。\xe2\x80\x9d
\n\n换句话说:23:34:22 属于一天中的最后一个小时,直到24 0。超过零的时间相当于:第二天。
也许这可以被视为一个错误:一天中的几个小时从第一个到第二个二十到第零个?我建议:填写错误报告。
\n 归档时间: |
|
查看次数: |
1427 次 |
最近记录: |