1. 程式人生 > >c時間日期與時間戳的轉換

c時間日期與時間戳的轉換

這段時間老需要對時間進行轉換,也就是將時間戳轉換成特定的格式,或者特定的格式轉換成時間戳。

首先想到的當然是用系統的方法了,但是寫完後,發現第一次載入頁面的時候特別的卡,一步一步鎖定,最後發現,是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建立的空間,也沒想好在哪裡釋放比較好。暫時先這樣,測試應該能用。明天搞定,今天先下班~