Jul*_*les 6 cocoa-touch objective-c nsdate ios
我需要NSDate在没有小时,分钟和秒的情况下创建当前日期(或任何NSDate),并将其保存为NSDate尽可能少的几行?
我需要对日期执行一些计算,并且有小时,分钟和秒钟导致问题,我需要绝对日期(我希望绝对是正确的短语).它适用于iPhone应用程序.
我正在创建[NSDate date]添加小时,分钟和秒的日期.此外,我正在添加几个月的日期,我认为迎合日光节约,因为我在某些日期得到2300小时.
理想情况下,我需要一个函数来从NSDates创建绝对NSDates.
我知道我之前问了一个类似的问题,但是我需要结束NSDate而不是字符串而且我有点担心指定日期格式,例如yyyy等.
Ole*_*ann 32
首先,你必须明白,即使你从一个小时,几分钟和几秒开始NSDate,它仍然代表一个时刻.你永远不会得到NSDate像一整天的代表2011-01-28; 它永远都是2011-01-28 00:00:00 +00:00.这意味着您还必须考虑时区.
以下是一种方法(将作为NSDate类别实现),该方法NSDate在同一天的午夜UTC 返回self:
- (NSDate *)midnightUTC {
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
[calendar setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
NSDateComponents *dateComponents = [calendar components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit
fromDate:self];
[dateComponents setHour:0];
[dateComponents setMinute:0];
[dateComponents setSecond:0];
NSDate *midnightUTC = [calendar dateFromComponents:dateComponents];
[calendar release];
return midnightUTC;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3949 次 |
| 最近记录: |