加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 我如何将str转换为datetime?

发布时间:2020-12-15 10:10:45 所属栏目:大数据 来源:网络整理
导读:我如何将“2012年8月2日18:53”转换为DateTime? 当我使用StrToDate进行转换时,会出现错误’无效的日期格式’ 解决方法 您可以使用VarToDateTime(在Variants单元中找到),它支持Delphi的RTL不支持的各种时间格式. (它基于COM的日期支持例程,如各种Microsoft产
我如何将“2012年8月2日18:53”转换为DateTime?

当我使用StrToDate进行转换时,会出现错误’无效的日期格式’

解决方法

您可以使用VarToDateTime(在Variants单元中找到),它支持Delphi的RTL不支持的各种时间格式. (它基于COM的日期支持例程,如各种Microsoft产品中使用的例程.)我使用您提供的日期进行测试,并且确实将其正确地转换为TDateTime.在Delphi 2007和XE2上进行了测试.
program Project2;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  SysUtils,Variants;


var
  DT: TDateTime;
  TestDate: String;

begin
  TestDate := '02 August 2012 18:53';

  try
    DT := VarToDateTime(TestDate);
    { TODO -oUser -cConsole Main : Insert code here }
  except
    on E:Exception do
      Writeln(E.Classname,': ',E.Message);
  end;
  Writeln(FormatDateTime('mm/dd/yyyy hh:nn',DT));
  Readln;
end.

当前documentation中的更多信息,包括另一个使用示例(该页面底部的链接).

请注意,Variants单元中的函数使用默认的用户区域设置.如果它不是“US”,则从上面的字符串转换可能会失败.在这种情况下,您最好直接从指定美国语言环境的activex单元调用VarDateFromStr:

uses
  sysutils,activex,comobj;

var
  TestDate: String;
  DT: TDateTime;
begin
  try
    TestDate := '02 August 2012 18:53';
    OleCheck(VarDateFromStr(WideString(TestDate),$0409,Double(DT)));
    Writeln(FormatDateTime('mm/dd/yyyy hh:nn',DT));
    Readln;
  except
    on E:Exception do
      Writeln(E.Classname,E.Message);
  end;
end.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读