获取NSDate中的某一项

来源:互联网 发布:mcabook软件关不掉 编辑:程序博客网 时间:2024/05/22 03:43

以前觉得好像date应该有直接获取hour、year之类的东西,今天试了一下没有找到。。。百度之,竟然需要通过日历进行转换。。给跪了

代码如下

一个NSDate类型的变量date

NSDate *current = [NSDate date];//以当前时间为例

NSCalendar *calendar = [NSCalendar currentCalendar];

//有的帖子里面是这么写的[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

//先记下来以后有时间好好看一下,因为还有一个很重要的问题就是时差问题

//比如我要做天气更新判断,中国天气网更新时间18点的话,应该是北京时间,那新疆那边怎么办,应该会有影响吧。

//现在没时间了,反正影响不大,先不考虑这个问题。mark一下!!!

NSUInteger unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;

NSDateComponents *dateComponent = [calendar components:unitFlags fromDate:now];//得到的dateComponent就可以直接获取里面的某一项了


int year = [dateComponent year];

int month = [dateComponent month];

int day = [dateComponent day];

int hour = [dateComponent hour];//注:24小时制

int minute = [dateComponent minute];

int second = [dateComponent second];

注意:在实践中出现了无法获得正确星期几的情况。后来发现问题在unitFlags上。需要获得什么值,就要加入对应的unit,这里面没有NSWeekdayUnit,所以得到的dateComponent在获取weekday的时候就获取不到正确数据。上面各种flag应该只是需要用到什么加什么就可以了。



参考:http://my.oschina.net/notting/blog/83267
http://zani.iteye.com/blog/1182401

原创粉丝点击