iOS_满聪

想要源码的朋友,可以留下QQ邮箱.
  博客园  :: 新随笔  :: 管理

iOS- NSDateFormatter (自定义时间格式)

Posted on 2016-04-22 18:59  iOS_满聪  阅读(744)  评论(0编辑  收藏  举报

一. NSDateFormatter解释

1. 日期(NSDate)是NSString类的格式(stringWithFormat),也可以改变输出,如果需要输出年代信息等则需要进行转换,等等。

2. NSDate存储的是世界标准时(UTC),输出时需要根据时区转换为本地时间。

3. NSDateFormatter可以比较方便的进行格式转换。

二. 时间格式定义

1. G        --> 公元时代

 2. yy       --> 年的后两位

 3. yyyy     --> 完成的年

 4. MM       --> 月份  1-12月

 5. MMM      --> 月份英文简写 如Jan

 6. MMMM     --> 月份英文全写 如Janualy

 7. dd       --> 日  两位数表示 如02

 8. d        --> 日  1-2位显示 如 1 或者12

 9. EEE      --> 简写星期几 如: Sun

 10. EEEE    --> 全写星期几 Sunday

 11. aa      --> 上午下午  AM/PM

 12. H       --> 小时 24小时制 0-23

 13. K       --> 小时 12小时制 1-12

 14. m       --> 分钟  1-2位 如 2 或者22

 15. mm      --> 分钟  2位    如02

 16. s       --> 秒   1-2位

 17. ss      --> 秒   2位

 18. S       --> 毫秒

三. 封装的修改时间格式的方法 (需要传入NSString类型,并且返回NSString类型)

- (NSString *)formateDateToFull:(NSString *)string

{

    /**

     1. 获取到初始的时间字符串

     2. 设置该时间的格式

     3. 将时间字符串转变成为NSDate类型

     4. 重新设置自己想要时间格式

     5. 将时间转化为时间字符串

     */

    

    //实例化一个NSDateFormatter对象

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

    

    /**

     1. 模拟器默认的是英语环境,不加这句话也可以转换,

     2. 在真机上不加这句话就会获取不到下面的NSDate对象.因为真机一般是简体中文.

     3. 这句话的意思就死设置时间支持的语言为简体中文

     */

    dateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en"];

    

    

    // 设定时间格式,这个格式是后台给的时间,需要根据具体的时间格式自己定义.

    [dateFormatter setDateFormat:@"EEE MM dd HH:mm:ss yyyy"];

    

    // 将时间字符串根据上面设置的时间格式转换成NSDate类型

    NSDate *date = [dateFormatter dateFromString:string];

    

    // 重新设置自己想要的时间格式

    [dateFormatter setDateFormat:@"yyyy-MM-dd hh:mm"];

    

    // 将时间NSDate转化成为需要的NSString类型

    NSString *currentDateStr = [dateFormatter stringFromDate:date];

    

    return currentDateStr;

}