ISO 8601 による日付・時刻表記形式を紹介します。
C#でISO8601形式で時刻を表示するコードを紹介します。
下図のUIを作成します。Buttonを3つ、TextBoxを1つ配置します。
以下のコードを記述します。
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 FormIso8601 : Form
{
public FormIso8601()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
DateTime dt = DateTime.Now;
textBox1.Text = dt.ToString("yyyyMMddTHHmmss") + dt.ToString("zzz").Replace(":","");
}
private void button2_Click(object sender, EventArgs e)
{
DateTime dt = DateTime.Now;
textBox1.Text = dt.ToString("yyyy-MM-ddTHH:mm:sszzzz");
}
private void button3_Click(object sender, EventArgs e)
{
DateTime dt = DateTime.Now;
textBox1.Text = dt.ToString("s");
}
}
}
標準形式のISO8601形式の文字列を作成する場合はDateTime.ToStringで"yyyyMMddTHHmmss"を与えます。タイムゾーンについては"zzz"で表示できますがこの形式では"+09:00"の形式で文字列に変換されるため":"を削除します。
拡張形式の場合はDateTime.ToStringで"yyyy-MM-ddTHH:mm:sszzzz"を与えると出力できます。
また、タイムゾーンの表記が必要なければ、標準の書式指定文字列"s"を指定して出力できます。
プロジェクトを実行します。下図のウィンドウが表示されます。
[button1]をクリックします。"YYYYMMDDThhmmss+0900"形式のISO8601標準形式の文字列が表示できます。
[button2]をクリックします。"YYYY-MM-DDThh:mm:ss+09:00"形式のISO8601拡張形式の文字列が表示できます。
[button3]をクリックします。標準の"s"書式指定文字列での変換結果の文字列が表示されます。