Abh*_*nav 53 iphone cocoa-touch objective-c nsdate ios
我有两个NSDate对象,我想要两者之间的差异,结果应该再次是一个NSDate对象.知道怎么做到这一点?
在这里,我试图解决一个独特的问题,我必须找出经过的时间,然后本地化经过的时间.如果我在NSDate对象中有经过的时间,我可以本地化它.所以想到创建一个NSDate对象,它的时间组件与两个日期之间的时间间隔相同,这样我就可以使用NSDateFormatter对它进行本地化.
Nic*_*rge 151
NSDate表示时间的实例,因此它没有意义来表示一个间隔的时间作为一个NSDate.你想要的是NSDateComponents:
NSDate *dateA;
NSDate *dateB;
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *components = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay
fromDate:dateA
toDate:dateB
options:0];
NSLog(@"Difference in date components: %i/%i/%i", components.day, components.month, components.year);
Run Code Online (Sandbox Code Playgroud)
Nic*_*ver 18
如果你从2002年5月5日减去12/12/2001,这将是什么日期?两个日期之间的时间距离不能是日期,它总是某种间隔.您可以使用timeIntervalSinceDate:来计算间隔.
要进行本地化,您可以尝试以下步骤:
您可以将NSCalendar与dateFromComponents 一起使用:传入NSDateComponents.
要将timeInterval分解为NSDateComponents,请查看如何在iPhone上将NSTimeInterval分解为年,月,日,小时,分钟和秒?.
最后使用NSDateFormatter和initWithDateFormat:allowNaturalLanguage:来获取本地化字符串.该日期格式字符串语法显示不同的占位符.
| 归档时间: |
|
| 查看次数: |
48608 次 |
| 最近记录: |