NSDate常用方法

壤驷华美
2023-12-01

#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时区的名称


 类似资料: