時(shí)間和時(shí)間戳的互相轉(zhuǎn)換

一般時(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í)間。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容