DateTimeオブジェクトを文字列に変換した際に英語の月名や曜日名を取得する - C#

DateTimeオブジェクトを文字列に変換した際に英語の月名や曜日名を取得するコードを紹介します。

概要

DateTimeオブジェクトをToString()メソッドなどで文字列に変換した場合、曜日名や月名は日本語の名称で返されます。 一般的な用途であれば問題ありませんが、状況によっては英語の月名や曜日名を取得したい場合があります。 この記事では、DateTimeオブジェクトを文字列に変換した際に英語名の文字列を取得する方法を紹介します。

プログラム

デフォルトの動作を確認します。

UI

下図のフォームを作成します。テキストボックスとボタンを配置します。

コード

以下のコードを記述します。
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace CultureDemo
{
  public partial class FormSimpleCulture : Form
  {
    public FormSimpleCulture()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      textBox1.Text = DateTime.Now.ToString("dddd d MMMM yyyy");
    }
  }
}

解説

DateTime.Nowプロパティで現在時刻を取得し、ToString()メソッドで文字列に変換してテキストボックスに表示します。 ToStringメソッドに与える形式指定文字列の dddd が曜日名、dが日にち MMMM が月名、yyyyが西暦年を表現します。

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。ボタンをクリックします。


テキストボックスに文字列が表示されます。 (曜日名) (日にち) (月名) (西暦年) の形式の文字列が表示されます。曜日名と月名は日本語の名称であることが確認できます。

プログラム:英語の文字列で取得する

曜日名や月名を英語の名称を取得する場合は、System.Globalization.CultureInfo オブジェクトを利用します。

UI

下図のフォームを作成します。テキストボックスとボタンを配置します。

コード

下記のコードを記述します。[English]ボタン (button2) のClickイベントを実装します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace CultureDemo
{
  public partial class FormSimpleCulture : Form
  {
    public FormSimpleCulture()
    {
      InitializeComponent();
    }

    private void button2_Click(object sender, EventArgs e)
    {
      System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("en-US");
      textBox1.Text = DateTime.Now.ToString("dddd d MMMM yyyy",ci);
    }
  }
}

解説

下記のコードのCultureInfoオブジェクトで、文字列変換時のカルチャーを設定します。今回は英語の文字列に変換するため、 CultureInfoのコンストラクタの第一引数に英語を示す en-US の文字列を与えます。
  System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("en-US");

先の例と同様に現在の時刻を文字列に変換します。先のコードで作成したCultureIngo オブジェクトをToStringメソッドの第二引数に 与えることで、指定したカルチャーでの文字列変換になります。
  textBox1.Text = DateTime.Now.ToString("dddd d MMMM yyyy",ci);

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。ボタンをクリックします。


テキストボックスに文字列が表示されます。 先ほどのプログラムと同様に(曜日名) (日にち) (月名) (西暦年) の形式の文字列が表示されます。 曜日名と月名が英語の名称で表示されることが確認できます。

短い文字列で取得する場合

月名や曜日名を短い文字列で取得する場合は下記のコードを利用します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace CultureDemo
{
  public partial class FormSimpleCulture : Form
  {
    public FormSimpleCulture()
    {
      InitializeComponent();
    }

    private void button3_Click(object sender, EventArgs e)
    {
      System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("en-US");
      textBox1.Text = DateTime.Now.ToString("ddd d MMM yyyy", ci);
    }
  }
}

解説

形式指定文字列に ddd を記述すると省略形の曜日名を表示します。また MMM を記述すると省略形の月名を表示します。

実行結果

先ほどと同様の手順でプロジェクトを実行しボタンをクリックします。
(曜日名) (日にち) (月名) (西暦年) の形式の文字列が表示され、曜日名と月名は省略形の文字列が表示されることが確認できます。


DateTimeオブジェクトを文字列に変換して英語の表記の月名、曜日名の文字列を取得できました。

著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2021-01-02
作成日: 2021-01-02
iPentec all rights reserverd.