UTCからJST、JSTからUTCへ変換するコードと実行結果

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に表示します。

実装例

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

コード

以下のコードを記述します。Loadイベントと、ボタンのクリックイベントを実装します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace TimeZoneDemo
{
  public partial class FormTimeZoneConvert : Form
  {
    public FormTimeZoneConvert()
    {
      InitializeComponent();
    }

    private void FormTimeZoneConvert_Load(object sender, EventArgs e)
    {
      textBox1.Text=DateTime.Now.ToString("HH:mm:ss");

      System.Collections.ObjectModel.ReadOnlyCollection<TimeZoneInfo> zoneinfo = TimeZoneInfo.GetSystemTimeZones();
 
      foreach (TimeZoneInfo z in zoneinfo) {
        comboBox1.Items.Add(z.DisplayName + " - " + z.Id);
      }
    }

    private void button5_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.ConvertTimeFromUtc(input, jstZoneInfo);
      textBox2.Text = local.ToString("HH:mm");
    }

    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");
    }
  }
}

実行結果

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


[UTCtoJST]ボタンをクリックします。上部のテキストボックスに表示された時間に、9時間を足した時刻が下部のテキストボックスに表示されます。

[JSTtoUTC]ボタンをクリックします。上部のテキストボックスに表示された時間から、9時間を引いた時刻が下部のテキストボックスに表示されます。


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