从整数纪元时间值转换为本地时间

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),而不是有损奥斯汀菲利普斯的答案。

以上是关于从整数纪元时间值转换为本地时间的主要内容,如果未能解决你的问题,请参考以下文章

Perl 将本地时间转换为 unix(纪元)时间

Perl 将自纪元以来的微秒转换为本地时间

使用 pandas 将纪元时间转换为本地时间

将 UTC 纪元转换为本地日期

将 JSON 纪元时间转换为本地人类可读日期

在 Python 中使用 pytz 本地化纪元时间