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];
       
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容