您的位置:首页 > 其它

xcode 中nsdate 日期的一些处理方法

2012-04-14 18:23 393 查看
sqlite中存放的NSDate的时候,存放的是一个小数点后 6位的 浮点数字,表示的是 NSTimeInterval(以秒计算)

coredata存储NSDate时,在内部是存储了字参考时间以来的NSTimeInterval(以秒计算),而这个参考时间根据apple dateandtimes doc, NSDate computes time as seconds relative
to an absolute reference time: the first instant of January 1, 2001 GMT,其实参考日期是2001.1.1,而非1970年1月1日,因此有些语言在直接读取coredata
NSDate属性的sqlite Timestamp字段并转换成日期后,与原来存储的日期不一样了。

把字符串转换成NSDate



+(NSDate *)NSStringDateToNSDate:(NSString *)string {

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];

[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];

//#define kDEFAULT_DATE_TIME_FORMAT (@"yyyy-MM-dd HH:mm:ss'Z'")

[formatter setDateFormat:kDEFAULT_DATE_TIME_FORMAT];

NSDate *date = [formatter dateFromString:string];

[formatter release];

return date;

}

NSDate * date = [NSDate date] ; 这个语句中的 date 变量,不需要 使用 [date release]; 否则会引起内存泄露。

获取 北京时区的时间

缺省获得的时间是 +000 时区的。和北京时间 相差8个小时。

可以通过如下代码获得 北京时区的时间

+(NSDate *) localeDateTime
{
NSDate * seldate = [NSDate date];
NSTimeZone *zone = [NSTimeZone systemTimeZone];
NSInteger interval = [zone secondsFromGMTForDate: seldate];
NSDate * date = [seldate dateByAddingTimeInterval: interval];

return date;
}


把当前的时间 转换成 字符串

+(NSString *) localDateTimeString
{
NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
[formatter setDateFormat:kDEFAULT_DATE_TIME_FORMAT];
NSDate *now = [Tools localeDateTime];

return  [formatter stringFromDate: now];

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: