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创建的空间,也没想好在哪里释放比较好。暂时先这样,测试应该能用。明天搞定,今天先下班~


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值