主页C++ Builder 资料C++ Builder 参考手册System 日期和时间DateTimeToUnix
C++ Builder 串口控件
C++ Builder 编程技巧
C++ Builder 操作指南
C++ Builder 参考手册
基础知识
cfloat 浮点数
cmath 数学函数
cstdlib 标准库函数
System 字符串
System 日期和时间
 • TDate
 • TTime
 • TDateTime
 • TDateTimeBase
 • Now
 • UnixToDateTime
 • DateTimeToUnix
 • DateTimeToStr
 • DateToStr
 • DecodeDate
 • DecodeTime
 • DecodeDateTime
 • FormatDateTime
 • StrToDate
 • StrToDateDef
 • StrToDateTime
 • StrToDateTimeDef
 • StrToTime
 • StrToTimeDef
 • TimeToStr
System.Math.hpp 数学函数
其他数据类型
VCL 基础类
VCL 应用程序
Pictures 图片
Graphics 绘图
Additional 控件
System 控件
A ~ Z 字母顺序排列的目录
网友留言/技术支持
DateTimeToUnix - 把 TDateTime 类型的日期时间转为 UNIX 时间戳

函数原型:

__int64 __fastcall DateTimeToUnix(const System::TDateTime AValue, bool AInputIsUTC = true);

头文件:

#include <System.DateUtils.hpp> (XE2 之后) #include <DateUtils.hpp> (XE 之前)

参数:

AValue: TDateTime 类型的 UTC 时间或本地时间。
AInputIsUTC: 参数 AValue 的时间是 UTC 时间。true: AValue 是 UTC 时间,false: AValue 是本地时间。

返回值:

UNIX 时间戳,从 UTC 时间 1970年1月1日0时开始的,到这个时刻的秒数;

这个函数的时间戳是 __int64 类型的,没有 “2038年问题” 或 “Year 2038 problem” 了,
实际测试,一直计算到 9999年12月31日都没有问题。

 

例1:获取当前系统时间的时间戳

__int64 t = DateTimeToUnix(Now(), false); // 始终能够得到正确的结果,没有 2038年问题

time_t t = time(NULL); // 2038 年之前可以得到正确结果,2038年之后将得到错误的结果

 

 

例2:把本地时间 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
◤上一页:UnixToDateTime下一页:DateTimeToStr

C++ 爱好者 -- Victor Chen 的个人网站 www.cppfans.com 辽ICP备11016859号