一般時間戳的長度是13位。
1.精確到秒code
NSDate *localDate = [NSDate date]; //獲取當前時間
NSString *timeSp = [NSString stringWithFormat:@"%ld", (long)[localDate timeIntervalSince1970]]; //轉化為UNIX時間戳
NSLog(@"timeSp:%@",timeSp); //時間戳的值
2.精確到毫秒code
NSDate* dat = [NSDate dateWithTimeIntervalSinceNow:0];
NSTimeInterval a=[dat timeIntervalSince1970]*1000; // *1000 是精確到毫秒音同,不乘就是精確到秒
NSString *timeString = [NSString stringWithFormat:@"%f", a]; //轉為字符型
??//注:不想有小數點用%.0f?就OK啦
NSLog(@"timeString:%@",timeString); //時間戳的值
3.時間戳轉成時間data (如果時間戳是13位,在轉換前先除以1000變成10位)
NSDate *confromTimesp = [NSDate dateWithTimeIntervalSince1970:1363948516]; NSLog(@"1363948516 = %@",confromTimesp); //之后就可以對NSDate進行格式或處理
--------// 時間戳NSString 轉成 時間NSString -------
NSDate *confromTimesp = [NSDate dateWithTimeIntervalSince1970:[dict[@"time"] doubleValue]];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm"];
NSString *dateTime = [formatter stringFromDate:confromTimesp];
?
?知識補充
4鹃共、 Unix 時間戳為什么是自 1970 年 1 月 1 日起的絕對時間腺逛? 那么,1970年之前的時間如何用Unix時間戳表示唤冈?
1帅容、 因為Unix就是那個時代產生的颇象。
Unix是1969年發(fā)布的雛形,最早是基于硬件60Hz的時間計數并徘。
1971年底出版的《Unix Programmer's Manual》里定義的Unix Time是以
1971年
1月1日00:00:00作為起始時間遣钳,每秒增長60。
之后考慮到32位整數的范圍麦乞,如果每秒60個數字蕴茴,則兩年半就會循環(huán)一輪了。于是改成了以秒為計數單位姐直。
這個循環(huán)周期有136年之長荐开,就不在乎起始時間是1970還是1971年了,于是就改成了人工記憶简肴、計算比較方便的1970年了晃听。
(詳見:http://en.wikipedia.org/wiki/Unix_time#History
)
2、因為unix時間戳是一個有符號整數砰识,所以1970年前一百年可以用其負數部分表示能扒。
但事實上很少這要使用。因為unix時間戳主要用來表示當前時間或者和電腦有關的日志時間(如文件創(chuàng)立時間辫狼,log發(fā)生時間等)初斑。
考慮到所有電腦文件不可能在1970年前創(chuàng)立,所以用unix時間戳很少用來表示1970前的時間膨处。
當需要表示以前的時間见秤,一般就是自己定義數據結構。比如你可以用幾個數分別表示年月日真椿,或者像excel中用1900年1月1日后的天數表示時間鹃答。