1、NSCalendar
//首先创建NSCalendar的实例,可以简单的用当前实例,也可以创建其它的历法对应的实例。
NSCalendar *cal = [NSCalendar currentCalendar];
//下面通过NSCalendar来获取各个元素,保存在类NSDateComponents的实例中
//需要通过函数参数components指定希望获取的元素,详细的枚举后面会列出
NSDate *startDate = [[NSDatenew] autorelease];
NSDateComponents *dateComps = [cal components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit fromDate:startDate];
int year = [dateCompsyear];
int month = [dateCompsmonth];
int day = [dateCompsday];
int hour = [dateCompshour];
int minute = [dateCompsminute];
int second = [dateCompssecond];
NSLog(@"%d-%d-%d-%d-%d-%d",year,month,day,hour,minute,second);
打印:2013-3-19-17-2-2147483647【这个打印出来的跟实际北京时间是一样的】
NSDate *newDate = [cal dateFromComponents:dateComps];
NSLog(@"%@",newDate);
打印:2013-03-1909:02:00 +0000【和北京时间相差8小时,北京时间=GMT时间+8小时】
2、NSDate
NSDate *date = [NSDate date];
NSLog(@"%@",date);
打印:2013-03-1909:02:00 +0000【和北京时间相差8小时,北京时间=GMT时间+8小时】
转成正确的北京时间:
NSDate *date = [NSDate date];
NSDateFormatter *formater = [[[NSDateFormatteralloc] init]autorelease];
formater.timeZone = [NSTimeZone systemTimeZone];//无效
[formater setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
NSString *timestr = [formater stringFromDate: date];
NSLog(@"sss:%@",timestr);
打印:2013-03-1905:09:34
//这个根据系统设置的时间【是否24小时制】显示方式来,2013-03-19 17:12:19或者2013-03-19 05:09:34
3、验证:北京时间=GMT时间+8小时
NSDate *date = [NSDate date];
[self getGMTTimeStr:date];
- (NSString*)getGMTTimeStr:(NSDate *)oriDate {
NSDateFormatter *formater = [[NSDateFormatteralloc] init];
[formater setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
NSString *timestr = [formater stringFromDate:oriDate];
int interval = [[NSTimeZonesystemTimeZone] secondsFromGMTForDate:oriDate];
NSDate *gmtDate = [oriDate dateByAddingTimeInterval:-interval];
NSString *gmttimestr = [formater stringFromDate:gmtDate];
NSLog(@"oriTime vs. gmtTime: %@, %@",timestr,gmttimestr);
return gmttimestr;
}
打印:oriTime vs. gmtTime: 2013-03-1917:12:00, 2013-03-1909:12:00
4、NSDateFormatter格式化参数相关
格式化参数如下:
G: 公元时代,例如AD公元
yy: 年的后2位
yyyy: 完整年
MM: 月,显示为1-12
MMM: 月,显示为英文月份简写,如 Jan//跟系统语言版本有关系,中文显示“3月”,英文显示“Jan”
MMMM: 月,显示为英文月份全称,如 Janualy//跟系统语言版本有关系,中文显示“3月”,英文显示“Jan”
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: 毫秒
阅读(2687) | 评论(0) | 转发(0) |