TrySystemTimeToDateTime - C++ Builder

C++ Builder 参考手册System::SysutilsTrySystemTimeToDateTime


操作系统 API 的日期时间转为日期时间类型的数值

头文件:#include <System.SysUtils.hpp>
命名空间:System::Sysutils
函数原型:

bool __fastcall TrySystemTimeToDateTime(const _SYSTEMTIME &SystemTime, System::TDateTime &DateTime);

参数:

  • SystemTime:Windows API 的日期时间类型;
  • DateTime:返回日期时间类型数值转换结果;

返回值:

  • true:通过参数 DateTime 返回日期时间类型数值;
  • false:SystemTime 的日期无效,转换失败;
  • SystemTimeToDateTime 和 TrySystemTimeToDateTime 的区别:
    SystemTimeToDateTime 转换失败抛出 EConvertError 异常;
    • TrySystemTimeToDateTime 转换结果通过函数的参数返回,函数返回是否转换成功;
  • 使用 System::Dateutils::TTimeZone::Local->ToLocalTime() 和 System::Dateutils::TTimeZone::Local->ToUniversalTime() 在 UTC 时间和本地时间之间互相转换,如果有需要。

例子:把 API 函数 GetSystemTime 获取的系统时间转为本地时间 (北京时间)。
由于这个 API 函数获取到的是 UTC 时间,需要用 TTimeZone::Local->ToLocalTime 转为本地时间 (北京时间)。

#include <System.DateUtils.hpp>

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    SYSTEMTIME SysTime;
    GetSystemTime(&SysTime);
    TDateTime dt;
    if(TrySystemTimeToDateTime(SysTime,dt))
    {
        Memo1->Lines->Add(L"UTC 时间:" + FormatDateTime(L"yyyy/mm/dd hh:nn:ss.zzz", dt));
        dt = Dateutils::TTimeZone::Local->ToLocalTime(dt);
        Memo1->Lines->Add(L"本地时间:" + FormatDateTime(L"yyyy/mm/dd hh:nn:ss.zzz", dt));
    }
    else
    {
        Memo1->Lines->Add(L"转换失败!");
    }
}

运行结果:

运行结果

相关:


C++ Builder 参考手册System::SysutilsTrySystemTimeToDateTime

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容