从整数纪元时间值转换为本地时间
Posted
技术标签:
【中文标题】从整数纪元时间值转换为本地时间【英文标题】:Converting from an integer epoch time value to local time 【发布时间】:2013-01-18 16:43:40 【问题描述】:我一直坚持将整数纪元时间值转换为本地时间。
我目前将自纪元以来的时间存储在一个整数变量中,我需要一种方法将其转换为本地时间。
我尝试将它传递到本地时间,但它似乎不起作用。
只要我打电话,我就能得到本地时间来上班
time_t rawtime;
struct tm * timeinfo;
time ( &rawtime );
timeinfo = localtime ( &rawtime );
直接获取原始时间,但如果我想给 localtime() 一个整数值而不是当前时间,我会卡住。
【问题讨论】:
我不太明白你的问题。 localtime wants a pointer parameter,所以你不能只给它一些整数值。另一方面,作为time_t in many cases is actually an integer,你可以做localtime ( (time_t *) &someintegervariable );
。请注意,后者不能保证按标准工作,它恰好在大多数系统上以这种方式实现。这是你想要达到的目标吗?
【参考方案1】:
localtime()
函数接受一个指向const time_t
的指针,因此您必须先将整数时期值转换为time_t
,然后再调用localtime
。
int epoch_time = SOME_VALUE;
struct tm * timeinfo;
/* Conversion to time_t as localtime() expects a time_t* */
time_t epoch_time_as_time_t = epoch_time;
/* Call to localtime() now operates on time_t */
timeinfo = localtime(&epoch_time_as_time_t);
【讨论】:
声明以_s
和_t
结尾的变量是一种不好的编程习惯。
@MCCCS 可能,但它消除了可以说更有价值的代码示例。如果有人复制这个并想要保留一个不必要的冗长和繁琐的变量名,那么这取决于他们(IMO),而不是有损奥斯汀菲利普斯的答案。以上是关于从整数纪元时间值转换为本地时间的主要内容,如果未能解决你的问题,请参考以下文章