ios 日期时间的使用
2012 年 4 月 16 日
作者QQ:415074476
QQ群:191280586
1.工作中遇到的问题:
NSString *dateStr = @"Fri Dec 03 18:30:01 +0800 2010";
NSDateFormatter *dateformatter=[[NSDateFormatter alloc] init];
[dateformatter setDateFormat:@"EEE MMM dd HH:mm:ss zzz yyyy"];
NSDate *date = [dateformatter dateFromString:dateStr];
[dateformatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *dateString = [dateformatter stringFromDate:date];
NSLog(@"%@",dateString);
这段代码 在真机上打印不出“dateString”,而在模拟器上可以打印出来,真机的系统是IOS5.0,
解决办法如下:
[dateformatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];
2.关于setTimeZone
从字符串转换成日期
setTimeZone 是指定字符串当前使用的时区
从日期转换成字符串
setTimeZone 是指要转换成目标字符串使用的时区
3.时间API使用总结:
1.使用NSDate获取时间
2.使用NSDateFormatter做时间格式的转换
3.需要使用时分秒等信息时,先获得NSDate,再使用NSDateComponents解析NSDate.
NSDate * startDate = [[NSDate alloc] init];
NSCalendar * chineseCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSUInteger unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit |
NSSecondCalendarUnit | NSDayCalendarUnit |
NSMonthCalendarUnit | NSYearCalendarUnit;
NSDateComponents * cps = [chineseCalendar components:unitFlags fromDate:startDate];
NSUInteger hour = [cps hour];
NSUInteger minute = [cps minute];
!importance: 千万不要通过字符串截取的方式.因为NSDate永远是返回格式威治时区的时间, 而NSDateComponents解析时,会把时区再转成本地时区.