对于我正在编写的小型todo程序,我有这种形式的时间戳
time_t t = time(NULL);
每次输入任务时都会保存,以表示输入的时间.
我想将任务存储到纯文本文件中,以便可以保存和恢复状态.我应该如何将时间戳存储到文本文件中,以及在阅读文本文件后如何将它们恢复到我的程序中?
解决方法
使用gmtime()将time_t转换为struct tm,然后使用strftime()将struct tm转换为纯文本(最好是ISO 8601格式).结果将是可移植的,人类可读的和机器可读的.
要返回time_t,只需将字符串解析回struct tm并使用mktime().
以供参考:
> gmtime
> strftime
> strptime
> mktime
代码示例:
// Converting from time_t to string time_t t = time(NULL); struct tm *ptm = gmtime(&t); char buf[256]; strftime(buf,sizeof buf,"%F %T",ptm); // buf is now "2015-05-15 22:55:13" // Converting from string to time_t char *buf = "2015-05-15 22:55:13"; struct tm tm; strptime(buf,&tm); time_t t = mktime(&tm);