iOS 获取当前时间及时间戳的互换

在项目开发中,难免会遇到使用当前时间,比如实现网络请求上传报文、预约、日历等功能。

2019.10更新

1. 将时间戳转换为时间 (以毫秒为单位)

//参数:时间戳
//返回值格式:2019-04-19 10:33:35.886
- (NSString *)getTimestamp:(NSString*)mStr{
    
    NSTimeInterval interval    =[mStr doubleValue] / 1000.0;
    
    NSDate *date              = [NSDate dateWithTimeIntervalSince1970:interval];
    
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    
    [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSS"];
    
    [formatter setTimeZone:[NSTimeZone timeZoneWithName:@"Asia/Beijing"]];
    
    NSString *dateString      = [formatter stringFromDate: date];
    
    NSLog(@"时间戳对应的时间是:%@",dateString);
    
    return dateString;
    
}

2. 获取当前时间 (以毫秒为单位)

//返回值格式:2019-04-19 10:33:35.886
- (NSString *)getNowTimeTimestamp{
    
    NSDate *datenow = [NSDate date];//现在时间,你可以输出来看下是什么格式
    
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    
    [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSS"];
    
    [formatter setTimeZone:[NSTimeZone timeZoneWithName:@"Asia/Beijing"]];
    
    NSString *dateString      = [formatter stringFromDate: datenow];
    
    NSLog(@"当前时间戳对应的时间是:%@",dateString);
    
    return dateString;
}

3. 将时间转化成 时间戳

//返回值格式:1555642454396
- (NSInteger)timeSwitchTimestamp:(NSString *)formatTime{
    
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    
    [formatter setDateStyle:NSDateFormatterMediumStyle];
    
    [formatter setTimeStyle:NSDateFormatterShortStyle];
    
    [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSS"]; //(@"YYYY-MM-dd hh:mm:ss") ----------设置你想要的格式,hh与HH的区别:分别表示12小时制,24小时制
    
    NSTimeZone* timeZone = [NSTimeZone timeZoneWithName:@"Asia/Beijing"];
    
    [formatter setTimeZone:timeZone];
    
    NSDate* date = [formatter dateFromString:formatTime]; //------------将字符串按formatter转成nsdate
    
    //时间转时间戳的方法:
    NSInteger timeSp = [[NSNumber numberWithDouble:[date timeIntervalSince1970]*1000] integerValue];
    
    NSLog(@"将某个时间转化成 时间戳timeSp:%ld",(long)timeSp); //时间戳的值
    
    return timeSp;
    
}

4. 获取当前时间戳 (以毫秒为单位)

//返回值格式:1555642454396
//这里注意要获取完全部数值后在(long)强转, 如果(long)[datenow timeIntervalSince1970]*1000 这么写是先强转在*1000,就是秒级别的数据了
- (NSString *)nowTimeSwitchTimestamp{
    
    NSDate *datenow = [NSDate date];//现在时间
    
    NSString *timeSp = [NSString stringWithFormat:@"%ld", (long)([datenow timeIntervalSince1970]*1000)];
    
    return timeSp;
}

以下文本为最初文本,可做参考

1. 获取年月日时分秒

实现代码:

NSDate *date1 = [NSDate date];
NSDateFormatter *formatter1 = [[NSDateFormatter alloc] init];
[formatter1 setDateStyle:NSDateFormatterMediumStyle];
[formatter1 setTimeStyle:NSDateFormatterShortStyle];
[formatter1 setDateFormat:@"YYYY-MM-dd hh:mm:ss"];
NSString *DateTime1 = [formatter1 stringFromDate:date1];

str就是我们需要的时间,代码中("YYYY-MM-dd HH:mm:ss")这个时间的样式是可以根据我们的需求进行修改的,比如:
20170901112253 ==> ("YYYYMMddHHmmss")

如果只想获取年月,代码如下:

NSDate *date1 = [NSDate date];
NSDateFormatter *formatter1 = [[NSDateFormatter alloc] init];
[formatter1 setDateStyle:NSDateFormatterMediumStyle];
[formatter1 setTimeStyle:NSDateFormatterShortStyle];
[formatter1 setDateFormat:@"YYYY-MM"];
NSString *DateTime1 = [formatter1 stringFromDate:date1];

2. 区分系统时间是24小时制还是12小时制

代码如下:

//获取系统是24小时制或者12小时制
NSString *formatStringForHours = [NSDateFormatter dateFormatFromTemplate:@"j" options:0 locale:[NSLocale currentLocale]];
NSRange contains = [formatStringForHours rangeOfString:@"a"];
BOOL thisAMPM = contains.location != NSNotFound;

thisAMPM==TURE为12小时制,否则为24小时制

3. 字符串转时间戳

代码如下:

//字符串转时间戳
//datenow为当前时间
NSString *timeSp = [NSString stringWithFormat:@"%d", (long)[datenow timeIntervalSince1970]];  
//时间戳的值
NSLog(@"timeSp:%@",timeSp); 

4. 时间戳转字符串

代码如下:

//时间戳转字符串
NSString *timeStr = "1506064573";
NSTimeInterval interval=[timeStr doubleValue] / 1000.0;
NSDate *date = [NSDate dateWithTimeIntervalSince1970:interval];
//实例化一个NSDateFormatter对象
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
//设定时间格式,这里可以设置成自己需要的格式
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *currentDateStr = [dateFormatter stringFromDate:date];
       
iOS 获取当前时间及时间戳的互换_第1张图片

你可能感兴趣的:(iOS 获取当前时间及时间戳的互换)