一、NSDate,NSDateformatter,获取系统时间,时区,获取UTC时间
//准备一个oc时间的格式化器
NSDateFormatter *formatter = [[NSDateFormatter
alloc]init];
//获取并设置时间的时区,获取系统时间
NSTimeZone *currentTimezone = [NSTimeZone
systemTimeZone];
[formatter
setTimeZone:currentTimezone];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss
EEEE"];
NSArray *currentTimeArray = [[formatter
stringFromDate:[NSDate date]] componentsSeparatedByString:@"
"];
//获得UTC格式时间,0时区
NSTimeInterval unixTime = [[NSDate date]
timeIntervalSince1970];
//获得UTC时间
NSDate *utcTime = [NSDate
dateWithTimeIntervalSince1970:unixTime];
NSString *utcTimeStr = [[NSString alloc]
initWithFormat:@"%@\t\t",utcTime];
二、从nscalendar中获取年月日,从nstimezone中获取时区
//获得系统时间
NSDateFormatter
*dateformatter=[[NSDateFormatter alloc]
init];
[dateformatter setTimeZone:[NSTimeZone
systemTimeZone]];
[dateformatter setDateFormat:@"HH:mm:ss"];
NSString *
timeString=[dateformatter stringFromDate:[NSDate
date]];
//获得系统日期
NSCalendar *calendar = [[NSLocale currentLocale]
objectForKey:NSLocaleCalendar];//也可以使用[NSCalendar
currentCalendar];
NSUInteger mask = NSDayCalendarUnit | NSMonthCalendarUnit |
NSYearCalendarUnit;//8421码二进制求和,这些枚举的声明符合MISRA
C Coding Standard
NSDateComponents * dateConponent= [calendar
components:mask fromDate:[NSDate date]];//NSDateComponents对象表示一个日期对象的组件——例如年,月,日和小时。如果要使一个NSDateComponents对象有意义,你必须将其与一个日历对象相关联。
NSString *nsDateString= [NSString
stringWithFormat:@"M/d/- %@", [dateConponent
year], [dateConponent month], [dateConponent
day],timeString];
[dateformatter release];
P.S.附录
[dateformatter setDateFormat:@"HH:mm:ss"]格式化参数如下:
G:
公元时代,例如AD公元
yy: 年的后2位
yyyy: 完整年
MM:
月,显示为1-12
MMM: 月,显示为英文月份简写,如
Jan
MMMM: 月,显示为英文月份全称,如
Janualy
dd:
日,2位数表示,如02
d: 日,1-2位显示,如
2
EEE:
简写星期几,如Sun
EEEE:
全写星期几,如Sunday
aa:
上下午,AM/PM
H:
时,24小时制,0-23
K:时,12小时制,0-11
m: 分,1-2位
mm: 分,2位
s: 秒,1-2位
ss: 秒,2位
S: 毫秒
[calendar
components:mask fromDate:[NSDate
date]]中的mark来自多个枚举:
typedef
CF_OPTIONS(CFOptionFlags, CFCalendarUnit) {
kCFCalendarUnitEra = (1UL <<
1),//unsigned long,枚举被定义为8421码
kCFCalendarUnitYear = (1UL <<
2),
kCFCalendarUnitMonth = (1UL <<
3),
kCFCalendarUnitDay = (1UL <<
4),
kCFCalendarUnitHour = (1UL
<< 5),
kCFCalendarUnitMinute = (1UL
<< 6),
kCFCalendarUnitSecond = (1UL
<< 7),
kCFCalendarUnitWeek = (1UL
<< 8) ,
kCFCalendarUnitWeekday = (1UL
<< 9),
kCFCalendarUnitWeekdayOrdinal = (1UL
<< 10),
kCFCalendarUnitQuarter CF_ENUM_AVAILABLE(10_6,
4_0) = (1UL << 11),
kCFCalendarUnitWeekOfMonth
CF_ENUM_AVAILABLE(10_7, 5_0) = (1UL
<< 12),
kCFCalendarUnitWeekOfYear
CF_ENUM_AVAILABLE(10_7, 5_0) = (1UL
<< 13),
kCFCalendarUnitYearForWeekOfYear
CF_ENUM_AVAILABLE(10_7, 5_0) = (1UL
<< 14),
};
|