关于NSDate和NSCalendar的一些基本使用-创新互联

1、NSCalendar

成都创新互联公司-专业网站定制、快速模板网站建设、高性价比白朗网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式白朗网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖白朗地区。费用合理售后完善,十余年实体公司更值得信赖。

//首先创建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: 毫秒

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站名称:关于NSDate和NSCalendar的一些基本使用-创新互联
文章来源:http://ybzwz.com/article/pcsjc.html