- (void)viewDidLoad
{
[super viewDidLoad];
NSDate * date = [NSDate date];
NSDateFormatter * dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
//错误写法
[dateFormatter setDateFormat:@"YYYY年MM月DD日"];
//正确写法
[dateFormatter setDateFormat:@"yyyy年MM月dd日"];
NSString * str = @"2013年2月1日";
NSDate * strDate = [dateFormatter dateFromString:str];
NSLog(@"%@",strDate);
}
-------1、好文章:http://justcoding.iteye.com/blog/1468089
介绍NSDate之间的使用。
-------2、为什么 打印NSDate 与 打印NSDate转换为的字串 时间不一样。
参考:http://stackoverflow.com/questions/4547379/nsdate-is-not-returning-my-local-time-zone-default-time-zone-of-device
-------3、获得yesterday的NSDate
参考:http://stackoverflow.com/questions/1889164/get-nsdate-today-yesterday-this-week-last-week-this-month-last-month-var
NSDate存储的是世界标准时(UTC),输出时需要根据时区转换为本地时间
Dates
NSDate类提供了创建date,比较date以及计算两个date之间间隔的功能。Date对象是不可改变的。
如果你要创建date对象并表示当前日期,你可以alloc一个NSDate对象并调用init初始化:
或者使用NSDate的date类方法来创建一个日期对象。如果你需要与当前日期不同的日期,你可以使用NSDate的initWithTimeInterval...或dateWithTimeInterval...方法,你也可以使用更复杂的calendar或date components对象。
创建一定时间间隔的NSDate对象:
使用增加时间间隔的方式来生成NSDate对象:
如果要对NSDate对象进行比较,可以使用isEqualToDate:, compare:, laterDate:和 earlierDate:方法。这些方法都进行精确比较,也就是说这些方法会一直精确比较到NSDate对象中秒一级。例如,你可能比较两个日期,如果他们之间的间隔在一分钟之内则认为这两个日期是相等的。在这种情况下使用,timeIntervalSinceDate:方法来对两个日期进行比较。下面的代码进行了示例:
NSCalendar & NSDateComponents
日历对象封装了对系统日期的计算,包括这一年开始,总天数以及划分。你将使用日历对象对绝对日期与date components(包括年,月,日,时,分,秒)进行转换。
NSCalendar定义了不同的日历,包括佛教历,格里高利历等(这些都与系统提供的本地化设置相关)。NSCalendar与NSDateComponents对象紧密相关。
你可以通过NSCalendar对象的currentCalendar方法来获得当前系统用户设置的日历。
usersCalendar和currentCalendar对象是相等的,尽管他们是不同的对象。
你可以使用NSDateComponents对象来表示一个日期对象的组件——例如年,月,日和小时。如果要使一个NSDateComponents对象有意义,你必须将其与一个日历对象相关联。下面的代码示例了如何创建一个NSDateComponents对象:
要将一个日期对象解析到相应的date components,你可以使用NSCalendar的components:fromDate:方法。此外日期本身,你需要指定NSDateComponents对象返回组件。
同样你也可以从NSDateComponents对象来创建NSDate对象:
为了保证正确的行为,您必须确保使用的组件在日历上是有意义的。指定“出界”日历组件,如一个-6或2月30日在公历中的日期值产生未定义的行为。
你也可以创建一个不带年份的NSDate对象,这样的操作系统会自动生成一个年份,但在后面的代码中不会使用其自动生成的年份。
下面的示例显示了如何从一个日历置换到另一个日历:
历法计算
在当前时间加上一个半小时:
获得当前星期中的星期天(使用格里高利历):
如何可以计算出一周的第一天(根据系统的日历设置):
获得两个日期之间的间隔:
使用Category来计算同一时代(AD|BC)两个日期午夜之间的天数:
使用Category来计算不同时代(AD|BC)两个日期的天数:
判断一个日期是否在当前一周内(使用格里高利历):