Delphi Prism (.NET Framework) を使って任意の形式の文字列を日付型(DateTime)に変換する方法

Delphi Prism 2010 (というか .NET Framework) で、任意の形式の文字列を日付型(DateTime)に変換する方法についてのメモ。

何でこんな記事を書いているかと言うと、twitter の取得したデータの日付のフォーマットがこんな「Mon Jan 01 00:00:00 +0000 2010」だったんですね。

で、Parse メソッドでは対応していなかったので、その ParseExact メソッドを利用するという流れになりました。

ということで、次の様なコードを書いてみました。

[code lang=’delphi’] var dt := DateTime.ParseExact(‘Mon Jan 01 00:00:00 +0000 2010’, ‘ddd MMM dd HH:mm:ss +0000 yyyy’);
[/code] ※ParseExact メソッドは、第1引数が変換対象の文字列、第2引数が書式、です

これで dt が作成されるかと思いきや、(おそらく)例外が発生します。

これは、たとえば「ddd」の部分はカルチャ固有の文字列が入るからなんですね。
※英語環境で動かしていれば、例外は発生しないでしょう

次のコードなどで確認できます。

[code lang=’delphi’] var dt := new DateTime;
画面上のコントロール := dt.ToString(‘ddd MMM dd HH:mm:ss +0000 yyyy’);
[/code]

実行すると、「月 1 01 00:00:00 +0000 0001」と表示されるので、日本語のロケールで動いていることが判ります。

じゃぁどうすれば良いか。
カルチャを指定すれば良いです。

ParseExact メソッドの第3引数で指定します。

指定の仕方は簡単なのですが、カルチャ指定用の CultureInfo クラスが System.Globalization 名前空間にありますので、uses に追加するのを忘れないようにしましょう。

追加したら、先ほどのコードに第3引数を追加します。

[code lang=’delphi’] var dt := new DateTime;
画面上のコントロール := dt.ToString(‘ddd MMM dd HH:mm:ss +0000 yyyy’, CultureInfo.CreateSpecificCulture(“en-US”));
[/code]

画面には「Mon Jan 01 00:00:00 +0000 0001」と表示され、US のカルチャが適用されていることが確認できるでしょう。

これで、最初のコードも次の様にカルチャ指定をすることで、望みの結果を得ることができるようになります。

[code lang=’delphi’] var dt := DateTime.ParseExact(‘Mon Jan 01 00:00:00 +0000 2010’, ‘ddd MMM dd HH:mm:ss +0000 yyyy’, CultureInfo.CreateSpecificCulture(“en-US”));
[/code]

10年集客し続けられるサイトを、ワードプレスで自作する9つのポイント プレゼント

【最後まで読んでくれたあなたに】

あなたは、24時間365日、自分の代わりに集客し続けてくれるWebサイトを作りたい!と思ったことはありませんか?

私はこれまで500以上のWebサイトの構築と運営のご相談に乗ってきましたが、Webサイトを作ってもうまく集客できない人には、ある一つの特徴があります。

それは、「先を見越してサイトを構築していないこと」です。
Webサイトで集客するためには、構築ではなく「どう運用するか」が重要です。

しかし、重要なポイントを知らずにサイトを自分で構築したり、業者に頼んで作ってもらってしまうと、あとから全く集客に向いていないサイトになっていたということがよく起こります。

そこで今回、期間限定で
『10年集客し続けられるサイトをワードプレスで自作する9つのポイント』
について、過去に相談に乗ってきた具体的な失敗事例と成功事例を元にしてお伝えします。

・ワードプレスを使いこなせるコツを知りたい!
・自分にピッタリのサーバーを撰びたい!
・無料ブログとの違いを知りたい!
・あとで悔しくならない初期設定をしておきたい!
・プラグイン選びの方法を知っておきたい!
・SEO対策をワードプレスで行うポイントを知りたい!
・自分でデザインできる方法を知りたい!

という方は今すぐ無料でダウンロードしてください。

期間限定で、無料公開しています。

※登録後に表示される利用条件に沿ってご利用ください

Delphi Prism (.NET Framework) を使って任意の形式の文字列を日付型(DateTime)に変換する方法” に対して1件のコメントがあります。

  1. ロフトくん より:

    まさにddd MMM部分が変換できず、探していた情報です、有難う御座いました。

コメントを残す