UTCからJST、JSTからUTCへ変換する

UTCからJSTへの変換

UTCからJSTへ変換します。
JSTのTimeZoneInfoを取得し、TimeZoneInfoクラスのConvertTimeFromUTC()メソッドにJSTのTimeZoneInfoを与えて呼び出すことで、UTC時間をJSTに変換できます。

コード

protected void Button1_Click(object sender, EventArgs e)
{
  try {
    DateTime utc_input= System.DateTime.ParseExact(TextBox1.Text, "HH:mm:ss.fff",
      System.Globalization.DateTimeFormatInfo.InvariantInfo,
      System.Globalization.DateTimeStyles.NoCurrentDateDefault);

    TimeZoneInfo jstZoneInfo = System.TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time");

    DateTime jst = System.TimeZoneInfo.ConvertTimeFromUtc(utc_input, jstZoneInfo);
    string str = jst.ToString("HH:mm:ss fff");
    TextBox2.Text = str;
  }
  catch (ArgumentNullException exc) {
  }
  catch (FormatException exc) {
  }
}

解説

DateTime utc_input = System.DateTime.ParseExact(TextBox1.Text, "HH:mm:ss.fff",
  System.Globalization.DateTimeFormatInfo.InvariantInfo,
  System.Globalization.DateTimeStyles.NoCurrentDateDefault);
テキストボックスに入力された文字をDateTime型に変換します。入力フォーマットは"HH:mm:ss.fff"を受け付けます。

TimeZoneInfo jstZoneInfo = System.TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time");
にて、JSTのTimeZoneInfoを取得します。

DateTime jst = System.TimeZoneInfo.ConvertTimeFromUtc(utc_input, jstZoneInfo);
にて、ConvertTimeFromUtc()メソッドを呼び出し、入力されたUTC時間をJSTL時間に変換します。

string str = jst.ToString("HH:mm:ss fff");
TextBox2.Text = str;
変換されたJST時間をTextBox2に表示します。

JSTからUTCへの変換

JSTのTimeZoneInfoを取得し、TimeZoneInfoクラスのConvertTimeToUTC()メソッドにJSTのTimeZoneInfoを与えて呼び出すことで、UTC時間をJSTに変換できます。

コード

private void button6_Click(object sender, EventArgs e)
{
  string[] Formats = { "HH:mm:ss", "HH:mm" };

  DateTime input = System.DateTime.ParseExact(textBox1.Text, Formats,
    System.Globalization.DateTimeFormatInfo.InvariantInfo,
    System.Globalization.DateTimeStyles.NoCurrentDateDefault);

  TimeZoneInfo jstZoneInfo = System.TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time");
  DateTime local = TimeZoneInfo.ConvertTimeToUtc(input, jstZoneInfo);
  textBox2.Text = local.ToString("HH:mm");
}

解説

  string[] Formats = { "HH:mm:ss", "HH:mm" };

  DateTime input = System.DateTime.ParseExact(textBox1.Text, Formats,
    System.Globalization.DateTimeFormatInfo.InvariantInfo,
    System.Globalization.DateTimeStyles.NoCurrentDateDefault);
テキストボックスに入力された文字をDateTime型に変換します。入力フォーマットは"HH:mm:ss","HH:mm"を受け付けます。

TimeZoneInfo jstZoneInfo = System.TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time");
JSTのTimeZoneInfoを取得します。

DateTime local = TimeZoneInfo.ConvertTimeToUtc(input, jstZoneInfo);
ConvertTimeToUtc()メソッドを呼び出してJSTをUTCに変換します。

textBox2.Text = local.ToString("HH:mm");
変換したUTCの時刻をTextBox2に表示します。

著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2011-08-27
iPentec all rights reserverd.