NSDateFormatter and NSDateComponents
NSDateFormatter調整時間格式的代碼
在開發iOS程序時,有時候需要將時間格式調整成自己希望的格式,這個時候我們可以用NSDateFormatter類來處理。
例如:
//實例化一個NSDateFormatter對象
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
//設定時間格式,這里可以設置成自己需要的格式
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
//用[NSDate date]可以獲取系統當前時間
NSString *currentDateStr = [dateFormatter stringFromDate:[NSDate date]];
//輸出格式為:2010-10-27 10:22:13
NSLog(@”%@”,currentDateStr);
//alloc后對不使用的對象別忘了release
[dateFormatter release];
NSDateComponents
NSDateComponents封裝在一個可擴展的,面向對象的方式的日期組件。它是用來彌補時間的日期和時間組件提供一個指定日期:小時,分鐘,秒,日,月,年,等等。它也可以用來指定的時間,例如,5小時16分鐘。一個NSDateComponents對象不需要定義所有組件領域。當一個NSDateComponents的新實例被創建,日期組件被設置為NSUndefinedDateComponent。
一個NSDateComponents對象本身是毫無意義的;你需要知道它是針對什么日歷解釋,你需要知道它的值是否是正整數和值是多少。
NSDateComponents的實例不負責回答關于一個日期以外的信息,它是需要先初始化的。例如,如果你初始化一個對象為2004年5月6日,其星期幾NSUndefinedDateComponent,不是星期四。要得到正確的星期幾,你必須創建一個NSCalendar日歷實例,創建一個NSDate對象并使用dateFromComponents:方法,然后使用components:fromDate:檢索平周幾
Getting Information About an NSDateComponents Object
獲取一個NSDateComponents對象的信息
- –?era 時代
- –?year 年
- –?month 月
- –?day 天
- –?hour 時
- –?minute 分
- –?second 秒
- –?week
- –?weekday
- –?weekdayOrdinal
- –?quarter 季度
Setting Information for an NSDateComponents Object
設置一個NSDateComponents對象的信息
- –?setEra:
- –?setYear:
- –?setMonth:
- –?setDay:
- –?setHour:
- –?setMinute:
- –?setSecond:
- –?setWeek:
- –?setWeekday:
- –?setWeekdayOrdinal:
- –?setQuarter:
例子如下:獲得2004年5月6日是星期幾
| NSDateComponents *comps = [[NSDateComponents alloc] init]; |
| [comps setDay:6]; |
| [comps setMonth:5]; |
| [comps setYear:2004]; |
| NSCalendar *gregorian = [[NSCalendar alloc] |
| ? ? initWithCalendarIdentifier:NSGregorianCalendar]; |
| NSDate *date = [gregorian dateFromComponents:comps]; |
| [comps release]; |
| NSDateComponents *weekdayComponents = |
| ? ? [gregorian components:NSWeekdayCalendarUnit fromDate:date]; |
| int weekday = [weekdayComponents weekday]; NSLog(@"%d",weekday); |
如果需要更加詳細,請查閱 “Calendars, Date Components, and Calendar Units” in Date and Time Programming Guide.日期和時間的程序指南
//一段例子:計算距離某一天還有多少時間
NSDate* toDate ? = [ [ NSDate alloc] initWithString:@"2012-9-29 0:0:00 +0600" ]; ?
NSDate*? startDate? = [ [ NSDate alloc] init ]; ?
NSCalendar* chineseClendar = [ [ NSCalendar alloc ] initWithCalendarIdentifier:NSGregorianCalendar ]; ?
NSUInteger unitFlags = ?
NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit; ?
NSDateComponents *cps = [chineseClendar components:unitFlags fromDate:startDate? toDate:toDate? options:0]; ?
NSInteger diffHour = [cps hour]; ?
NSInteger diffMin? ? = [cps minute]; ?
NSInteger diffSec ? = [cps second]; ?
NSInteger diffDay ? = [cps day]; ?
NSInteger diffMon? = [cps month]; ?
NSInteger diffYear = [cps year]; ?
NSLog(? @" From Now to %@, diff: Years: %d? Months: %d, Days; %d, Hours: %d, Mins:%d, sec:%d",? ?
[toDate description], diffYear, diffMon, diffDay, diffHour, diffMin,diffSec ); ?
[toDate release]; ?
[startDate release]; ?
[chineseClendar release];?
轉載于:https://blog.51cto.com/rongbaohong/895141
總結
以上是生活随笔為你收集整理的NSDateFormatter and NSDateComponents的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决:libtool: line 815
- 下一篇: 小白学数据分析-----聚类分析理论之K