NDate的使用

iOS 將時(shí)間NSDate轉(zhuǎn)化為毫秒時(shí)間戳?

對于將NSDate類型轉(zhuǎn)換為時(shí)間戳,相信大家肯定都會,這樣的示例代碼,在百度等搜索引擎上面一搜索就是一大篇的東西,但是,大家有沒有注意到的是 通過那些方法轉(zhuǎn)換得到的時(shí)間戳是 10位的數(shù)值,這個(gè)數(shù)值在轉(zhuǎn)化為 NSDate類型的時(shí)候,就會出點(diǎn)兒錯(cuò),你會發(fā)現(xiàn),每一個(gè)時(shí)間的 毫秒都是為000的;

而正確的應(yīng)該是下面這樣的輸出:

好了,接下來就是問題所在了:其實(shí)呢,并不是我們代碼出錯(cuò)了,而是因?yàn)?[[NSDate date] timeIntervalSince1970] 雖然可以獲取到后面的毫秒、微秒 ,但是在保存的時(shí)候省略掉了。如一個(gè)時(shí)間戳不省略的情況下為 1395399556.862046 ,省略掉后為一般所見 1395399556 。所以想取得毫秒時(shí)用獲取到的時(shí)間戳 *1000 ,想取得微秒時(shí) 用取到的時(shí)間戳 * 1000 * 1000 。這樣就解釋了上面的10位數(shù)值的問題,當(dāng)你取毫秒的時(shí)候,就會變成13位數(shù)值了。我想這樣大家應(yīng)該明白了吧!

當(dāng)然,說了 這么多理論性的東西,為的就是我們接下來會附上的代碼的:

將這段代碼寫在 你需要獲取時(shí)間戳和轉(zhuǎn)換的地方,而我因?yàn)槭呛唵问痉?,就放?viewDidload里面的。

long long time = [self getDateTimeTOMilliSeconds:[NSDate date]];

NSLog(@"%llu",time);

NSDate *dat = [self getDateTimeFromMilliSeconds:time];

NSDateFormatter * formatter = [[NSDateFormatter alloc ] init];

[formatter setDateFormat:@"YYYY-MM-dd hh:mm:ss.SSS"];

NSString *date = [formatter stringFromDate:dat];

NSString *timeLocal = [[NSString alloc] initWithFormat:@"%@", date];

NSLog(@"\n%@", timeLocal);

里面包含了自己寫出來了2個(gè)小函數(shù),這2個(gè)函數(shù)呢,是互逆的:

//將時(shí)間戳轉(zhuǎn)換為NSDate類型

-(NSDate *)getDateTimeFromMilliSeconds:(long long) miliSeconds

{

NSTimeInterval tempMilli = miliSeconds;

NSTimeInterval seconds = tempMilli/1000.0;//這里的.0一定要加上,不然除下來的數(shù)據(jù)會被截?cái)鄬?dǎo)致時(shí)間不一致

NSLog(@"傳入的時(shí)間戳=%f",seconds);

return [NSDate dateWithTimeIntervalSince1970:seconds];

}

//將NSDate類型的時(shí)間轉(zhuǎn)換為時(shí)間戳,從1970/1/1開始

-(long long)getDateTimeTOMilliSeconds:(NSDate *)datetime

{

NSTimeInterval interval = [datetime timeIntervalSince1970];

NSLog(@"轉(zhuǎn)換的時(shí)間戳=%f",interval);

long long totalMilliseconds = interval*1000 ;

NSLog(@"totalMilliseconds=%llu",totalMilliseconds);

return totalMilliseconds;

}

這樣,你就可以得到你想要的13位時(shí)間戳,并且從這個(gè)時(shí)間戳里面獲取正確的時(shí)間(精確到毫秒喲!)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在iOS開發(fā)中,經(jīng)常會遇到各種各樣的時(shí)間問題,8小時(shí)時(shí)差,時(shí)間戳,求時(shí)間間隔,農(nóng)歷等等。解決辦法網(wǎng)上比比皆是,但大...
    真巧了_嘿閱讀 2,930評論 0 7
  • iOS開發(fā)中,經(jīng)常會遇到各種各樣的時(shí)間問題,8小時(shí)時(shí)差,時(shí)間戳,求時(shí)間間隔,農(nóng)歷等等。解決辦法網(wǎng)上比比皆是,但大多...
    小李龍彪閱讀 6,748評論 1 6
  • 前一段時(shí)間,公司要求傳遞各種時(shí)間類型,以及各種時(shí)間戳的轉(zhuǎn)化,因此,自己抽了一點(diǎn)時(shí)間去轉(zhuǎn)化這個(gè)時(shí)間類型,最后,把大部...
    葫蘆村村長閱讀 1,466評論 0 0
  • 感賞自己今天對待孩子心態(tài)平和,沒有急躁 感賞老公能及時(shí)調(diào)整心態(tài)不去在想鑰匙鎖屋里的事 感賞女兒能夠正確分析同學(xué)之間...
    悄然h閱讀 130評論 0 0

友情鏈接更多精彩內(nèi)容