2014-01-15 81 views
0

我有一個包含從.sqlite文件檢索到的時間戳下面列,轉換爲可讀的時間戳

什麼格式在這些時間戳和一個如何從它們轉換爲可讀時間戳?

其實如果我知道顯示的時間戳的格式,我可以找出其餘的。

我試過在時間戳轉換工具中粘貼這個在線但轉換器不能識別特定的格式。 我主要以爲時間戳的格式爲YYYYMMDDHHMMSS.uuuuuu,但數字的長度不對應于格式的長度,所以我在這一個撓我的頭

任何幫助嗎?

更新1

這些時間戳對應於消息,從而其明顯的是,必須有保持在該時間戳ATLEAST分和秒。

更新2

這些timesstamps從中我從.sqlite文件中檢索消息應用來

更新3

基於所述附加的列名稱設置成和消息,我能夠驗證時間戳與應用程序內的消息時間戳相關聯到11/28/2012 10:48am我無法驗證秒。

+0

你甚至不知道你的數據來自哪裏,而且你問的數據格式是什麼? Duhhhh ... –

+0

@BlueTomato對不起,它來自消息傳遞應用程序隊友。我查看了.sqlite文件並找到了該列。 – Pavan

+0

這些數字不是1970年1月以來的總秒數,除非20世紀80年代初的日期對你來說意味着什麼。所以誰知道!? –

回答

3

這些是從一定時間過去的秒數。通常1970年1月1日0:00是第一秒。但在這種情況下,這將是一個沒有太大意義的日期,因爲第一次的時間戳是Sat, 28 Nov 1981 10:48:55 GMT。告訴我們該應用程序爲第一個時間戳顯示的內容,並且計算參考日期很容易。

可能是2001年1月1日,因爲它是另一個經常使用的參考日期。即在Mac OS X和iOS上。

NSDate *date = [NSDate dateWithTimeIntervalSinceReferenceDate:timestampFromDB]; 

我寫了一個測試PROGRAMM。

#import <Foundation/Foundation.h> 

int main(int argc, const char * argv[]) 
{ 
    @autoreleasepool { 
     NSTimeInterval intervals[] = {375792535.395, 375792980.868017}; 
     for (int i = 0; i < sizeof(intervals)/sizeof(intervals[0]); ++i) { 
      NSTimeInterval interval = intervals[i]; 
      NSDate *date = [NSDate dateWithTimeIntervalSinceReferenceDate:interval]; 
      NSLog(@"%@", date); 
     } 
    } 
    return 0; 
} 

日誌:

2012-11-28 10:48:55 +0000 
2012-11-28 10:56:20 +0000 

前兩個時間戳。請檢查,如果這是應用程序中顯示的日期。

結論:

該數據庫包含雙值來表示自2001年1月1日0:00 GMT,所謂在Mac(OS X)世界的「基準日」是通過秒。該列不包含具有特定格式的字符串。

+0

因此,時間戳表示從2001年1月1日0:00GMT稱爲'參考日期'並且不是格式!這真的很酷@vikingosegundo!我確實檢查了應用程序,並在查看了我的發現後,確認生成的日誌與GUI上的時間戳相匹配。所以它肯定參考你指定的參考日期!再次感謝 – Pavan

1

您可以使用+ (instancetype)dateWithTimeIntervalSince1970:(NSTimeInterval)seconds如果二是自1970年以來:

NSLog(@"%@",[NSDate dateWithTimeIntervalSince1970:375792535.395]) 

輸出:

1981-11-28 10:48:55 +0000 

看來,第二個是自2001年以來(正如他在答覆中提到的@vikingosegundo ),所以你可以使用

+(instancetype)dateWithTimeIntervalSinceReferenceDate:(NSTimeInterval)seconds 

實施例:

NSLog(@"%@", [NSDate dateWithTimeIntervalSinceReferenceDate:375792535.395]); 

輸出:

2012-11-28 11:24:51 +0000 

然後可以使用NSDateFormatter用於格式化在所希望的格式的日期。

+0

可能你將會失去31年 – vikingosegundo

+0

@vikingosegundo:給定時間戳的相應時間是該日期,但如果他使用其他年份(不是1970年)作爲參考日期,那麼你是正確的。 –

+1

當他說數據來自消息應用程序時,這些數字是從1970年1月起的總秒數的機會是多少?接近0 ... –