NSDateFormatter 和 NSDateComponents 的用法

原创 2012年03月23日 15:51:50

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的实例不负责回答关于一个日期以外的信息,它是需要先初始化的。例如,如果你初始化一个对象为200456日,其星期几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];  

版权声明:本文为博主原创文章,未经博主允许不得转载。

iOS中处理时间的类

iOS处理时间的类主要包括NSDate,NSDateFormatter, NSDateComponents, NSCalendar等等,他们每个都是负责处理什么, 又是如何配合起来使用呢? 1. N...
  • sakulafly
  • sakulafly
  • 2013年04月27日 22:05
  • 15535

iphone——日期处理

Dates         NSDate类提供了创建date,比较date以及计算两个date之间间隔的功能。Date对象是不可改变的。         如果你要创建date对象并表示当前日期,你...
  • lingedeng
  • lingedeng
  • 2011年11月21日 15:07
  • 9878

Objective-C学习之NSDateComponents

NSDateComponents NSDateComponents封装在一个可扩展的,面向对象的方式的日期组件。它是用来弥补时间的日期和时间组件提供一个指定日期:小时,分钟,秒,日,月,年,等等。它...
  • yxys01
  • yxys01
  • 2016年05月19日 10:13
  • 662

iOS时间那点事 NSCalendar + NSDateComponents

历法能使人类确定每一日再无限的时间中的确切位置并记录历史。日历,历法,一般历法都是遵循固定的规则的,具有周期性。日历都是已知的或可预测的。任何一种具体的历法,首先必须明确规定起始点,即开始计算的年代,...
  • xmy0010
  • xmy0010
  • 2016年05月26日 14:17
  • 612

日历(NSCalendar)与日期组建(NSDateComponents)

之前介绍了NSDate的功能和用法,以及NSDate与NSString之间的相互转换,假设you
  • tinylight
  • tinylight
  • 2014年08月27日 00:12
  • 2584

iOS 官方文档 NSDateComponents

前言NSDateComponents是一个与日期有关的类,但这个类具体是干吗的呢?我们现从字面上的意思来理解。Components就是零件、组件的意思,其实这个类的作用就是把日期拆分成一个一个的组件。...
  • u010545480
  • u010545480
  • 2016年01月22日 14:22
  • 4225

NSDateComponents的各种week

使用 NSDateComponents
  • u010810493
  • u010810493
  • 2014年10月30日 16:48
  • 1387

NSDateFormatter 和 NSDateComponents 的用法

NSDateFormatter调整时间格式的代码 在开发iOS程序时,有时候需要将时间格式调整成自己希望的格式,这个时候我们可以用NSDateFormatter类来处理。 例如: //实例化...
  • ch_soft
  • ch_soft
  • 2012年03月23日 15:51
  • 26648

iOS SDK详解之NSCalendar & NSDate​Components

原创Blog,转载请注明出处 blog.csdn.net/hello_hwc 欢饮关注我的iOS SDK详解专栏 http://blog.csdn.net/column/details/huan...
  • Hello_Hwc
  • Hello_Hwc
  • 2015年07月11日 14:08
  • 6725

NSDateFormatter 和 NSDateComponents 的用法

NSDateFormatter调整时间格式的代码 在开发iOS程序时,有时候需要将时间格式调整成自己希望的格式,这个时候我们可以用NSDateFormatter类来处理。 例如: //实例化...
  • u014289319
  • u014289319
  • 2015年04月08日 20:51
  • 186
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:NSDateFormatter 和 NSDateComponents 的用法
举报原因:
原因补充:

(最多只允许输入30个字)