时间格式
G: 公元时代,例如AD公元
yy: 年的后2位
yyyy: 完整年
MM: 月,显示为1-12,带前置0
MMM: 月,显示为英文月份简写,如 Jan
MMMM: 月,显示为英文月份全称,如 Janualy
dd: 日,2位数表示,如02
d: 日,1-2位显示,如2,无前置0
EEE: 简写星期几,如Sun
EEEE: 全写星期几,如Sunday
aa: 上下午,AM/PM
H: 时,24小时制,0-23
HH: 时,24小时制,带前置0
h: 时,12小时制,无前置0
hh: 时,12小时制,带前置0
m: 分,1-2位
mm: 分,2位,带前置0
s: 秒,1-2位
ss: 秒,2位,带前置0
S: 毫秒
Z: GMT(时区)
1.将日期时间转化为字符串
// 实例化NSDateFormatter
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
// 设置日期格式
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
// 获取当前日期
NSDate *currentDate = [NSDate date];
NSString *currentDateString = [formatter stringFromDate:currentDate];
NSLog(@"%@", currentDateString);
2.将时间字符串转换为日期
// 实例化NSDateFormatter
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
// 设置日期格式
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
// 设置为UTC时区
// 这里如果不设置为UTC时区,会把要转换的时间字符串定为当前时区的时间(东八区)转换为UTC时区的时间
[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
// 要转换的日期字符串
NSString *dateString = @"2011-05-03 23:11:40";
NSDate *someDay = [formatter dateFromString:dateString];
NSLog(@"%@", someDay);
3.不同日期格式相互转换
// 实例化NSDateFormatter
NSDateFormatter *formatter1 = [[NSDateFormatter alloc] init];
// 设置日期格式
[formatter1 setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
// 要转换的日期字符串
NSString *dateString1 = @"2011-05-03 23:11:40";
// NSDate形式的日期
NSDate *date =[formatter1 dateFromString:dateString1];
NSDateFormatter *formatter2 = [[NSDateFormatter alloc] init];
[formatter2 setDateFormat:@"yyyy/MM/dd HH:mm:ss"];
NSString *dateString2 = [formatter2 stringFromDate:date ];
NSLog(@"%@",dateString2);
4.获取当前准确的时间(NSDate
格式)
次方法获取的时间会比我们实际时间慢了8个小时
NSDate *date = [NSDate date];
我们可以使用下面的方法, 来获取当前准确的时间:
NSDate *date = [NSDate date];
// 直接初始化的时间, 也是当前时间
//NSDate *date = [[NSDate alloc]init];
NSTimeZone *zone = [NSTimeZone systemTimeZone];
NSTimeInterval interval = [zone secondsFromGMTForDate:date];
NSDate *currentDate = [date dateByAddingTimeInterval:interval];
NSLog(@"%@", currentDate);