您的位置:首页 > 编程语言

NSDateFormatter调整时间格式的代码

2016-02-18 13:18 507 查看
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];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: