您的位置:首页 > 其它

日期类问题与解决方法小结

2016-02-19 09:28 225 查看
********************

日期类

@interface NSDate : NSObject <</SPAN>NSCopying, NSSecureCoding>

这个类比较简单 就几个方法 都是跟NSTimeInterval(时间间隔)有关 其实就是double值

********

获取的NSDate date时间与实际相差8个小时解决方案

NSDate *cur = [NSDate date];

NSTimeZone *zone = [NSTimeZone systemTimeZone];

NSInteger interval = [zone secondsFromGMTForDate: cur];

cur = [cur dateByAddingTimeInterval: interval];

NSLog(@"当前时间:%@", cur);

我习惯的写法:

NSDate *cur = [NSDate date];

cur = [cur dateByAddingTimeInterval: [[NSTimeZone systemTimeZone] secondsFromGMTForDate:cur]];

NSLog(@"当前时间:%@", cur);

********

日期格式化类

@interface NSDateFormatter : NSFormatter

这个类提供一些date与string之间的格式化的工具方法

- (NSString *)stringFromDate:(NSDate *)date;

- (NSDate *)dateFromString:(NSString *)string;

时间与string的转换

如果用df的话 就不用考虑格林尼治时间差

- (NSString *)dateFormat;

时间格式 一定要设置

@"yyyy-MM-dd HH:mm:ss.s"

2014-07-03 03:14:04.3

注意:

①第一个mm要大写

②hh如果是大写就是24进制 小写就是12进制

③ss后面加.显示毫秒

④还有带am pm 的以后用到补充 a 是上午下午

@"EE MMM dd HH:mm:ss Z yyyy"

Wed Jul 02 20:14:04 -0700 2014

G -- 纪元

一般会显示公元前(BC)和公元(AD)

y -- 年

假如是2013年,那么yyyy=2013,yy=13

M -- 月

假如是3月,那么M=3,MM=03,MMM=Mar,MMMM=March

假如是11月,那么M=11,MM=11,MMM=Nov,MMMM=November

w -- 年包含的周

假如是1月8日,那么w=2(这一年的第二个周)

W -- 月份包含的周(与日历排列有关)

假如是2013年4月21日,那么W=4(这个月的第四个周)

F -- 月份包含的周(与日历排列无关)

和上面的W不一样,F只是单纯以7天为一个单位来统计周,例如7号一定是第一个周,15号一定是第三个周,与日历排列无关。

D -- 年包含的天数

假如是1月20日,那么D=20(这一年的第20天)

假如是2月25日,那么D=31+25=56(这一年的第56天)

d -- 月份包含的天数

假如是5号,那么d=5,dd=05

假如是15号,那么d=15,dd=15

E -- 星期

假如是星期五,那么E=Fri,EEEE=Friday

a -- 上午(AM)/下午(PM)

H -- 24小时制,显示为0--23

假如是午夜00:40,那么H=0:40,HH=00:40

h -- 12小时制,显示为1--12

假如是午夜00:40,那么h=12:40

K -- 12小时制,显示为0--11

假如是午夜00:40,那么K=0:40,KK=00:40

k -- 24小时制,显示为1--24

假如是午夜00:40,那么k=24:40

m -- 分钟

假如是5分钟,那么m=5,mm=05

假如是45分钟,那么m=45,mm=45

s -- 秒

假如是5秒钟,那么s=5,ss=05

假如是45秒钟,那么s=45,ss=45

S -- 毫秒

一般用SSS来显示

z -- 时区

表现形式为GMT+08:00

Z -- 时区

表现形式为+0800
http://www.cnblogs.com/wayne23/archive/2013/03/25/2981009.html
_l_date1.text = [df stringFromDate:d];

[df setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"]];

设置中文显示格式(星期X)

@"yyyy年MM月dd日#EEEE"

EEEE为星期几,EEE为周几, EE是英文缩写

@"yyyy年MMMMd日"];//MMMM 为xx月,一个d可以省去01日前的0

typedef enum {

NSDateFormatterNoStyle = kCFDateFormatterNoStyle,

NSDateFormatterShortStyle = kCFDateFormatterShortStyle,//“11/23/37” or “3:30pm”

NSDateFormatterMediumStyle = kCFDateFormatterMediumStyle,//"Nov 23, 1937"

NSDateFormatterLongStyle = kCFDateFormatterLongStyle,//"November 23, 1937” or “3:30:32pm"

NSDateFormatterFullStyle = kCFDateFormatterFullStyle//“Tuesday, April 12, 1952 AD” or “3:30:42pm PST”

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