IOS 時間戳

時間戳:是自 1970 年 1 月 1 日(00:00:00 GMT)至當前時間的總秒數。它也被稱爲 Unix 時間戳(Unix Timestamp)

 一、 Unix 時間戳爲什麼是自 1970 年 1 月 1 日起的絕對時間? 那麼,1970年之前的時間如何用Unix時間戳表示?

           1、      因爲Unix就是那個時代產生的。

Unix是1969年發佈的雛形,最早是基於硬件60Hz的時間計數。

1971年底出版的《Unix Programmer's Manual》裏定義的Unix Time是以1971年1月1日00:00:00作爲起始時間,每秒增長60。

之後考慮到32位整數的範圍,如果每秒60個數字,則兩年半就會循環一輪了。於是改成了以秒爲計數單位。

這個循環週期有136年之長,就不在乎起始時間是1970還是1971年了,於是就改成了人工記憶、計算比較方便的1970年了。

(詳見:http://en.wikipedia.org/wiki/Unix_time#History

2、因爲unix時間戳是一個有符號整數,所以1970年前一百年可以用其負數部分表示。

    但事實上很少這要使用。因爲unix時間戳主要用來表示當前時間或者和電腦有關的日誌時間(如文件創立時間,log發生時間等)。

   考慮到所有電腦文件不可能在1970年前創立,所以用unix時間戳很少用來表示1970前的時間。

   當需要表示以前的時間,一般就是自己定義數據結構。比如你可以用幾個數分別表示年月日,或者像excel中用1900年1月1日後的天數表示時間。





二、下面是iOS中時間戳 與 時間之間的轉換方法:

      

        1、時間轉換爲時間戳:::

NSDate *localDate = [NSDate date]; //獲取當前時間
NSString *timeSp = [NSString stringWithFormat:@"%ld", (long)[localDate timeIntervalSince1970]];  //轉化爲UNIX時間戳
NSLog(@"timeSp:%@",timeSp); //時間戳的值  

            也有這樣寫的:::

NSDate* dat = [NSDate dateWithTimeIntervalSinceNow:0];
NSTimeInterval a=[dat timeIntervalSince1970]*1000;  //  *1000 是精確到毫秒,不乘就是精確到秒
NSString *timeString = [NSString stringWithFormat:@"%f", a]; //轉爲字符型
           懶的話就一句話:

    NSString *timeSp = [NSString stringWithFormat:@"%ld", (long)[[NSDate  date] timeIntervalSince1970]];

          或者直接c語言函數time(NULL)就可以了

   NSLog(@"%ld", time(NULL));  // 這句也可以獲得時間戳,跟上面一樣,精確到秒

       

        2、把時間戳轉換爲時間:::

NSDate *confromTimesp = [NSDate dateWithTimeIntervalSince1970:1363948516];  
NSLog(@"1363948516  = %@",confromTimesp); //之後就可以對NSDate進行格式或處理 

發佈了13 篇原創文章 · 獲贊 1 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章