这段时间老需要对时间进行转换,也就是将时间戳转换成特定的格式,或者特定的格式转换成时间戳。
首先想到的当然是用系统的方法了,但是写完后,发现第一次加载页面的时候特别的卡,一步一步锁定,最后发现,是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创建的空间,也没想好在哪里释放比较好。暂时先这样,测试应该能用。明天搞定,今天先下班~