#pragma mark NSDate创建(只举例类方法,实例方法一样) // 返回当前时间(GMT,0时区,格林尼治时间) + (id)date; // 返回以当前时间为基准,然后过了secs秒的时间 + (id)dateWithTimeIntervalSinceNow:(NSTimeInterval)secs; // 返回以2001/01/01 GMT为基准,然后过了secs秒的时间 + (id)dateWithTimeIntervalSinceReferenceDate:(NSTimeInterval)ti; // 返回以1970/01/01 GMT为基准,然后过了secs秒的时间 + (id)dateWithTimeIntervalSince1970:(NSTimeInterval)secs; // 根据时间间隔和指定的date,获得对应的时间 + (instancetype)dateWithTimeInterval:(NSTimeInterval)secsToBeAdded sinceDate:(NSDate *)date; // 返回很多年以后的未来的某一天 + (id /* NSDate * */)distantFuture; // 返回很多年以前的某一天 + (id /* NSDate * */)distantPast; #pragma mark NSDate取回时间间隔 // 以anotherDate为基准时间,返回实例保存的时间与anotherDate的时间间隔 - (NSTimeInterval)timeIntervalSinceDate:(NSDate *)anotherDate; // 以当前时间(now)为基准时间,返回实例保存的时间与当前时间(now)的时间间隔 - (NSTimeInterval)timeIntervalSinceNow; // 以 1970/01/01 GMT 为基准时间,返回实例保存的时间与 1970/01/01 GMT 的时间间隔 - (NSTimeInterval)timeIntervalSince1970; // 以 2001/01/01 GMT 为基准时间,返回实例保存的时间与 2001/01/01 GMT 的时间间隔 - (NSTimeInterval)timeIntervalSinceReferenceDate; // 以 2001/01/01 GMT 为基准时间,返回当前时间与 2001/01/01 GMT 的时间间隔 + (NSTimeInterval)timeIntervalSinceReferenceDate; #pragma mark NSDate日期比较 // 与anotherDate相比,返回比较早的那个日期 - (NSDate *)earlierDate:(NSDate *)anotherDate; // 与anotherDate相比,返回比较晚的那个日期 - (NSDate *)laterDate:(NSDate *)anotherDate; // 与anotherDate相比,相同返回YES - (BOOL)isEqualToDate:(NSDate *)otherDate; // 用于排序时调用: ~ 当实例保存的日期值与other相同时返回NSOrderedSame ~ 当实例保存的日期值晚于other返回NSOrderedDescending ~ 当实例保存的日期值早于other返回NSOrderedAscending - (NSComparisonResult)compare:(NSDate *)other; @NSString和NSDate的相互转化(NSDateFormatter的格式串详解) 1、字符串转换为日期 // 实例化一个NSDateFormatter对象 NSDateFormatter * dateFormat = [[NSDateFormatter alloc] init]; // 设定时间格式,要注意跟下面的dateString匹配,否则日起将无效 [dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; NSDate *date =[dateFormat dateFromString:@"2013-3-11 10:00:01"]; 2、日期转为字符串 // 实例化一个NSDateFormatter对象 NSDateFormatter* dateFormat = [[NSDateFormatter alloc] init]; // 设置Locale,星期几会以中文显示 dateFormat.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"]; // 设定时间格式(后面跟 a,默认为中文) [dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss a"]; // 礼拜几,上下午等显示为英文 把AM,PM换成上午,下午显示为中文 [dateFormat setAMSymbol:@"AM"]; [dateFormat setPMSymbol:@"PM"]; // 系统默认格式 //[dateFormat setDateStyle:NSDateFormatterFullStyle]; //[dateFormat setTimeStyle:NSDateFormatterFullStyle]; //求出当天的时间字符串,当更改时间格式时,时间字符串也能随之改变 NSString *dateString = [dateFormat stringFromDate:[NSDate date]]; @NSDateFormatter的格式串 a: AM/PM (上午/下午) A: 0~86399999 (一天的第A微秒) c/cc: 1~7 (一周的第一天, 周天为1) ccc: Sun/Mon/Tue/Wed/Thu/Fri/Sat (星期几简写) cccc: Sunday/Monday/Tuesday/Wednesday/Thursday/Friday/Saturday (星期几全拼) d: 1~31 (月份的第几天, 带0) D: 1~366 (年份的第几天,带0) e: 1~7 (一周的第几天, 带0) E~EEE: Sun/Mon/Tue/Wed/Thu/Fri/Sat (星期几简写) EEEE: Sunday/Monday/Tuesday/Wednesday/Thursday/Friday/Saturday (星期几全拼) F: 1~5 (每月的第几周, 一周的第一天为周一) g: Julian Day Number (number of days since 4713 BC January 1) 未知 G~GGG: BC/AD (Era Designator Abbreviated) 未知 GGGG: Before Christ/Anno Domini 未知 h: 1~12 (0 padded Hour (12hr)) 带0的时, 12小时制 H: 0~23 (0 padded Hour (24hr)) 带0的时, 24小时制 k: 1~24 (0 padded Hour (24hr) 带0的时, 24小时制 K: 0~11 (0 padded Hour (12hr)) 带0的时, 12小时制 L/LL: 1~12 (0 padded Month) 第几月(3) LLL: Jan/Feb/Mar/Apr/May/Jun/Jul/Aug/Sep/Oct/Nov/Dec 月份简写(3月) LLLL: January/February/March/April/May/June/July/August/September/October/November/December 月份全称(三月) m: 0~59 (0 padded Minute) 分钟 M/MM: 1~12 (0 padded Month) 第几月 MMM: Jan/Feb/Mar/Apr/May/Jun/Jul/Aug/Sep/Oct/Nov/Dec MMMM: January/February/March/April/May/June/July/August/September/October/November/December(同LLLL) q/qq: 1~4 (0 padded Quarter) 第几季度 qqq: Q1/Q2/Q3/Q4 季度简写 qqqq: 1st quarter/2nd quarter/3rd quarter/4th quarter 季度全拼 Q/QQ: 1~4 (0 padded Quarter) 同小写 QQQ: Q1/Q2/Q3/Q4 同小写 QQQQ: 1st quarter/2nd quarter/3rd quarter/4th quarter 同小写 s: 0~59 (0 padded Second) 秒数 S: (rounded Sub-Second) 未知 u: (0 padded Year) 未知 v~vvv: (General GMT Timezone Abbreviation) 常规GMT时区的编写 vvvv: (General GMT Timezone Name) 常规GMT时区的名称 w: 1~53 (0 padded Week of Year, 1st day of week = Sunday, NB: 1st week of year starts from the last Sunday of last year) 一年的第几周, 一周的开始为周日,第一周从去年的最后一个周日起算 W: 1~5 (0 padded Week of Month, 1st day of week = Sunday) 一个月的第几周 y/yyyy: (Full Year) 完整的年份 yy/yyy: (2 Digits Year) 2个数字的年份 Y/YYYY: (Full Year, starting from the Sunday of the 1st week of year) 这个年份未知干嘛用的 YY/YYY: (2 Digits Year, starting from the Sunday of the 1st week of year) 这个年份未知干嘛用的 z~zzz: (Specific GMT Timezone Abbreviation) 指定GMT时区的编写 zzzz: (Specific GMT Timezone Name) Z: +0000 (RFC 822 Timezone) 指定GMT时区的名称