一. 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;
}