将 UnixTime 转换为日期的最佳方法是什么?
是否有它的功能或算法?
Unix 时间是自纪元 (1970-01-01) 以来的秒数。根据您的意思,您可以struct tm
使用localtime将其转换为 a 或使用strftime将其转换为字符串。
time_t t = time(NULL);
struct tm *tm = localtime(&t);
char date[20];
strftime(date, sizeof(date), "%Y-%m-%d", tm);
作为本地时间的手册
返回值指向一个静态分配的结构,随后调用任何日期和时间函数可能会覆盖该结构。
这就是一些人所说的数据竞赛。当两个或多个线程localtime
同时调用时会发生这种情况。
为了避免这种情况,一些人建议使用localtime_s
Microsoft 独有的功能。在 POSIX 系统上,您应该localtime_r
改用
localtime_r() 函数的作用相同,但将数据存储在用户提供的结构中。
用法看起来像
time_t t = time(NULL);
struct tm res;
localtime_r(&t, &res);
另请参阅将 Unix/Linux 时间转换为 Windows FILETIME
此函数应将 UnixTime 转换为 Windows SYSTEMTIME
SYSTEMTIME intChromeTimeToSysTime(long long int UnixTime)
{
ULARGE_INTEGER uLarge;
uLarge.QuadPart = UnixTime;
FILETIME ftTime;
ftTime.dwHighDateTime = uLarge.HighPart;
ftTime.dwLowDateTime = uLarge.LowPart;
SYSTEMTIME stTime;
FileTimeToSystemTime(&ftTime, &stTime);
return stTime;
}