UnixTime到可读日期

Sup*_*ser 10 c++ time date unix-timestamp

将UnixTime转换为日期的最佳方法是什么?

有它的功能还是算法?

Ola*_*che 15

Unix时间是自纪元(1970-01-01)以来的几秒钟.根据您的意思,您可以将其转换为struct tm使用本地时间或使用strftime将其转换为字符串.

time_t t = time(NULL);
struct tm *tm = localtime(&t);
char date[20];
strftime(date, sizeof(date), "%Y-%m-%d", tm);
Run Code Online (Sandbox Code Playgroud)

作为本地时间的手册状态

返回值指向静态分配的结构,该结构可能被后续调用任何日期和时间函数覆盖.

这是一些人称之为数据竞赛的内容.当两个或多个线程localtime同时调用时会发生这种情况

为了防止这种情况,有人建议使用localtime_s,这是Microsoft唯一的功能.在POSIX系统,你应该使用localtime_r,而不是

localtime_r()函数执行相同操作,但将数据存储在用户提供的结构中.

用法看起来像

time_t t = time(NULL);
struct tm res;
localtime_r(&t, &res);
Run Code Online (Sandbox Code Playgroud)

  • 如果您希望转换的大纪元时间不是当前时间,而是任何其他给定时间(例如:1464545562043),该怎么办? (2认同)