ISO 8601 による日付・時刻表記形式 - ISO 8601 日時フォーマット

ISO 8601 による日付・時刻表記形式を紹介します。

書式 (基本表記)

UTCの場合
YYYYMMDDTHHmmss
日本時刻(UTCから時差のある場合)
YYYYMMDDTHHmmss+zzzz

書式 (拡張表記)

UTCの場合
YYYY-MM-DDTHH:mm:ss
日本時刻(UTCから時差のある場合)
YYYY-MM-DDTHH:mm:ss+zz:zz

基本表記

20140416T163025
20140416T163025+0900

拡張表記

2014-05-01T20:45:20
2014-05-01T20:45:20+09:00

参考:C#での実装例

C#でISO8601形式で時刻を表示するコードを紹介します。

UI

下図の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"書式指定文字列での変換結果の文字列が表示されます。

著者
iPentec.com の代表。ハードウェア、サーバー投資、管理などを担当。
Office 365やデータベースの記事なども担当。
掲載日: 2014-03-03
iPentec all rights reserverd.