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を愛用