函数原型:
TDateTime __fastcall UnixToDateTime(const __int64 AValue, bool AReturnUTC = true);
头文件:
#include <System.DateUtils.hpp> (XE2 之后) #include <DateUtils.hpp> (XE 之前)
参数:
AValue: UNIX 时间戳,从 UTC 时间 1970年1月1日0时开始的,到这个时刻的秒数;
AReturnUTC: 函数返回值的时间是 UTC 时间。true: 返回 UTC 时间,false: 返回本地时间。
返回值:
TDateTime 类型的 UTC 时间或本地时间。
这个函数的时间戳是 __int64 类型的,没有 “2038年问题” 或 “Year 2038 problem” 了,
实际测试,一直计算到 9999年12月31日都没有问题。
例:把本地时间 9999年12月31日 23:59:59 转为 UNIX 时间戳,再把时间戳转回本地时间
void __fastcall TForm1::Button5Click(TObject *Sender)
{
TDateTime dt1 = TDateTime(9999,12,31,23,59,59,999);
__int64 iTimeStamp = DateTimeToUnix(dt1, false);
Memo1->Lines->Add(L"UNIX 时间戳:" + IntToStr(iTimeStamp));
TDateTime dt2 = UnixToDateTime(iTimeStamp, false);
Memo1->Lines->Add(L"本地时间:" + dt2);
}
|
运行结果:
UNIX 时间戳:253402271999
本地时间:9999-12-31 23:59:59 |
|