StrToDateTime の変換をするには?

解決


にゃお  2006-07-15 06:38:32  No: 22512

CSVファイルで作成されている日付のデータで
'2006/07/14 14:15:25' のようなデータがあります。
このデータを  StrToDateTime を使って TDateTime 型にするのですが
OSが英語の場合は例外が発生してしまいます。

また、逆に、DateTimeToStr を使って作成された文字列が
'7/14/2006 2:15:25 PM'  となってしまい、
CSVファイルを作成する場合にフォーマットが変わってしまいます。
どのようにすると簡単にできるのでしょうか?

やはり、文字列を解析して、年・月・日・時・分・秒に分解して
StrToInt や IntToStr を駆使して StrToDateTimeEx や
DateTimeToStrEx などの関数を作るしかないのでしょうか?

よろしくお願いします


えーとね  2006-07-15 09:36:11  No: 22513

ShortDateFormatはどうでしょう。


えーと  2006-07-15 09:52:00  No: 22514

Delphi6 だとこれでうまくいきます。

procedure TForm1.Button1Click(Sender: TObject);
var
  t: TDateTime;
begin
  t := VarToDateTime('2006/07/14 14:15:25');
  Label1.Caption := FormatDateTime('yyyy/mm/dd/ hh/nn/ss', t);
end;


えーと  2006-07-15 09:53:05  No: 22515

訂正

procedure TForm1.Button1Click(Sender: TObject);
var
  t: TDateTime;
begin
  t := VarToDateTime('2006/07/14 14:15:25');
  Label1.Caption := FormatDateTime('yyyy/mm/dd/ hh:nn:ss',t);
end;


にゃお  2006-07-18 22:59:41  No: 22516

お世話になりす。

どうも、すみません。
VarToDateTimeは調べてテストプロを作ってみたのですが
うまく動いていなかったので、質問させていただいたのですが、
再度ソースを確認してみると、テストプロに問題があったようです。

VarToDateTime でうまくいきました。
どうもありがとうございます。

それから、FormatDateTime ですが、
DateTimeToString を見つけたので、こちらを使ってしまいました。
申し訳ありません。

FormatDateTime とDateTimeToString の内部処理的な違いは
よくわかりませんが、動作に問題がないようなので DateTimeToString
のままにしておきます。(いたるところで使用しているので
変更に時間がかかり、変更ミスでバグ作るかも知れないので・・・)
でも、問題が起こる可能性があるようでしたら教えてください。
よろしくおねがいします。

ひとまず、解決とさせていただきます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加