3

「2012年8月2日18:53」をDateTimeに変換するにはどうすればよいですか?

変換にStrToDateを使用すると、エラー「無効な日付形式」が発生します

4

1 に答える 1

8

DelphiのRTLではサポートされていないさまざまな時間形式をサポートするVarToDateTime(ユニットにある)を使用できます。Variants(これは、さまざまなMicrosoft製品で使用されているようなCOMの日付サポートルーチンに基づいています。)提供された日付でテストしましたが、実際にTDateTime正しく変換されます。Delphi2007と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.

別の使用例(そのページの下部にあるリンク)を含む、現在のドキュメントの詳細情報。


ユニット内の関数Variantsはデフォルトのユーザーロケールを使用することに注意してください。'US'でない場合、上記の文字列からの変換は失敗する可能性があります。その場合は、米国のロケールを指定してユニットVarDateFromStrから直接呼び出す方がよいでしょう。activex

uses
  sysutils, activex, comobj;

var
  TestDate: String;
  DT: TDateTime;
begin
  try
    TestDate := '02 August 2012 18:53';
    OleCheck(VarDateFromStr(WideString(TestDate), $0409, 0, Double(DT)));
    Writeln(FormatDateTime('mm/dd/yyyy hh:nn', DT));
    Readln;
  except
    on E:Exception do
      Writeln(E.Classname, ': ', E.Message);
  end;
end.
于 2012-08-02T16:50:42.083 に答える