一般時(shí)間戳的長(zhǎng)度是13位。
1.精確到秒code
NSDate *localDate = [NSDate date]; //獲取當(dāng)前時(shí)間
NSString *timeSp = [NSString stringWithFormat:@"%ld", (long)[localDate timeIntervalSince1970]]; //轉(zhuǎn)化為UNIX時(shí)間戳
NSLog(@"timeSp:%@",timeSp); //時(shí)間戳的值
2.精確到毫秒code
NSDate* dat = [NSDate dateWithTimeIntervalSinceNow:0];
NSTimeInterval a=[dat timeIntervalSince1970]*1000; // *1000 是精確到毫秒,不乘就是精確到秒
NSString *timeString = [NSString stringWithFormat:@"%f", a]; //轉(zhuǎn)為字符型
??//注:不想有小數(shù)點(diǎn)用%.0f?就OK啦
NSLog(@"timeString:%@",timeString); //時(shí)間戳的值
3.時(shí)間戳轉(zhuǎn)成時(shí)間data (如果時(shí)間戳是13位,在轉(zhuǎn)換前先除以1000變成10位)
NSDate *confromTimesp = [NSDate dateWithTimeIntervalSince1970:1363948516]; NSLog(@"1363948516 = %@",confromTimesp); //之后就可以對(duì)NSDate進(jìn)行格式或處理
--------// 時(shí)間戳NSString 轉(zhuǎn)成 時(shí)間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];
?
?知識(shí)補(bǔ)充
4、 Unix 時(shí)間戳為什么是自 1970 年 1 月 1 日起的絕對(duì)時(shí)間? 那么,1970年之前的時(shí)間如何用Unix時(shí)間戳表示?
1、 因?yàn)閁nix就是那個(gè)時(shí)代產(chǎn)生的。
Unix是1969年發(fā)布的雛形,最早是基于硬件60Hz的時(shí)間計(jì)數(shù)。
1971年底出版的《Unix Programmer's Manual》里定義的Unix Time是以
1971年
1月1日00:00:00作為起始時(shí)間,每秒增長(zhǎng)60。
之后考慮到32位整數(shù)的范圍,如果每秒60個(gè)數(shù)字,則兩年半就會(huì)循環(huán)一輪了。于是改成了以秒為計(jì)數(shù)單位。
這個(gè)循環(huán)周期有136年之長(zhǎng),就不在乎起始時(shí)間是1970還是1971年了,于是就改成了人工記憶、計(jì)算比較方便的1970年了。
(詳見(jiàn):http://en.wikipedia.org/wiki/Unix_time#History
)
2、因?yàn)閡nix時(shí)間戳是一個(gè)有符號(hào)整數(shù),所以1970年前一百年可以用其負(fù)數(shù)部分表示。
但事實(shí)上很少這要使用。因?yàn)閡nix時(shí)間戳主要用來(lái)表示當(dāng)前時(shí)間或者和電腦有關(guān)的日志時(shí)間(如文件創(chuàng)立時(shí)間,log發(fā)生時(shí)間等)。
考慮到所有電腦文件不可能在1970年前創(chuàng)立,所以用unix時(shí)間戳很少用來(lái)表示1970前的時(shí)間。
當(dāng)需要表示以前的時(shí)間,一般就是自己定義數(shù)據(jù)結(jié)構(gòu)。比如你可以用幾個(gè)數(shù)分別表示年月日,或者像excel中用1900年1月1日后的天數(shù)表示時(shí)間。