分享

c时间日期与时间戳的转换

 herowuking 2014-12-15

这段时间老需要对时间进行转换,也就是将时间戳转换成特定的格式,或者特定的格式转换成时间戳。

首先想到的当然是用系统的方法了,但是写完后,发现第一次加载页面的时候特别的卡,一步一步锁定,最后发现,是ios本身函数

  1. [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.时间戳转格式化

  1. #include <stdio.h>  
  2. #include <time.h>  
  3.   
  4. int main(int argc, const char * argv[])  
  5. {  
  6.     time_t t;  
  7.     struct tm *p;  
  8.     t=1384936600;  
  9.     p=gmtime(&t);  
  10.     char s[100];  
  11.     strftime(s, sizeof(s), "%Y-%m-%d %H:%M:%S", p);  
  12.     printf("%d: %s\n", (int)t, s);  
  13.     return 0;  
  14. }  

2.格式化转时间戳

  1. #include <stdio.h>  
  2. #include <time.h>  
  3.   
  4. int main(int argc, const char * argv[])  
  5. {  
  6.     struct tm* tmp_time = (struct tm*)malloc(sizeof(struct tm));  
  7.     strptime("20131120","%Y%m%d",tmp_time);  
  8.     time_t t = mktime(tmp_time);  
  9.     printf("%ld\n",t);  
  10.     free(tmp_time);  
  11.     return 0;  
  12. }  

还不算完全完吧,还没有和oc代码混编。malloc创建的空间,也没想好在哪里释放比较好。暂时先这样,测试应该能用。明天搞定,今天先下班~


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多