c時間日期與時間戳的轉換
阿新 • • 發佈:2018-12-30
這段時間老需要對時間進行轉換,也就是將時間戳轉換成特定的格式,或者特定的格式轉換成時間戳。
首先想到的當然是用系統的方法了,但是寫完後,發現第一次載入頁面的時候特別的卡,一步一步鎖定,最後發現,是ios本身函式
[NSDate dateWithTimeIntervalSince1970:[timeStr longLongValue]]
這句話特別卡,由於轉換的很多,都無法忍受了。最後就想著,不用它這個自帶的方法了,改用c裡面的方法來進行時間之間轉換。
要求也挺簡單:
1.時間戳轉格式化日期,比如:1384936600 → 2013-11-20 08:36:40 輸入一個long,輸出一個nsstring
2.反過來:2013-11-20 08:36:40 → 1384936600 輸入nsstring,輸出一個long
好久沒碰c語言。。好多函式都現查怎麼用,還好一會就搞定了
1.時間戳轉格式化
#include <stdio.h> #include <time.h> int main(int argc, const char * argv[]) { time_t t; struct tm *p; t=1384936600; p=gmtime(&t); char s[100]; strftime(s, sizeof(s), "%Y-%m-%d %H:%M:%S", p); printf("%d: %s\n", (int)t, s); return 0; }
2.格式化轉時間戳
#include <stdio.h> #include <time.h> int main(int argc, const char * argv[]) { struct tm* tmp_time = (struct tm*)malloc(sizeof(struct tm)); strptime("20131120","%Y%m%d",tmp_time); time_t t = mktime(tmp_time); printf("%ld\n",t); free(tmp_time); return 0; }
還不算完全完吧,還沒有和oc程式碼混編。malloc建立的空間,也沒想好在哪裡釋放比較好。暫時先這樣,測試應該能用。明天搞定,今天先下班~