iOS-時間戳轉時間

iOS-時間戳轉時間

  • 衆所周知,iOS默認生成的時間戳是10位整數,在調用接口時,如果服務器返回的是時間字符串或者是10位時間戳,轉換格式挺方便的,但如果服務器返回的是13位的時間戳,那麼就比較麻煩了。

10位時間戳

NSTimeInterval timestamp =  timestampString.doubleValue;
NSDate *detaildate = [NSDate dateWithTimeIntervalSince1970:timestamp];
// 實例化一個NSDateFormatter對象
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
// 設定時間格式
[dateFormatter setDateFormat: formatString ?: @"yyyy-MM-dd"];
// 轉換後的字符串
NSString resultStr = [dateFormatter stringFromDate: detaildate];

13位時間戳

  • 如果按照上面的方式轉換,就會轉換錯誤!
  • 解決辦法如下:

方法一:除以1000,變成10位

NSTimeInterval timestamp =  timestampString.doubleValue / 1000.0;
NSDate *detaildate = [NSDate dateWithTimeIntervalSince1970:timestamp];
// 實例化一個NSDateFormatter對象
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
// 設定時間格式
[dateFormatter setDateFormat: formatString ?: @"yyyy-MM-dd"];
// 轉換後的字符串
NSString resultStr = [dateFormatter stringFromDate: detaildate];

方法一:截取字符串,變成10位

NSTimeInterval timestamp =  [timestampString substringToIndex: 10].doubleValue;
NSDate *detaildate = [NSDate dateWithTimeIntervalSince1970:timestamp];
// 實例化一個NSDateFormatter對象
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
// 設定時間格式
[dateFormatter setDateFormat: formatString ?: @"yyyy-MM-dd"];
// 轉換後的字符串
NSString resultStr = [dateFormatter stringFromDate: detaildate];

最終解決方案

#pragma mark - 時間戳→時間
+ (NSString *)formatTimestamp2DateString:(NSString *)timestampString format:(NSString *)formatString {
    if (!timestampString || timestampString.length <= 0) {
        return nil;
    }
    NSTimeInterval timestamp = timestampString.length >= 13 ? timestampString.doubleValue / 1000.0 : timestampString.doubleValue;
    NSDate *detaildate = [NSDate dateWithTimeIntervalSince1970:timestamp];
    // 實例化一個NSDateFormatter對象
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    // 設定時間格式
    [dateFormatter setDateFormat: formatString ?: @"yyyy-MM-dd"];
    return [dateFormatter stringFromDate: detaildate];
}
發佈了109 篇原創文章 · 獲贊 63 · 訪問量 25萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章