RFC 1123 (RFC 822) による日付・時刻表記形式 - RFC 1123 日時フォーマット

RFC 1123 (RFC 822)による日付・時刻表記形式を紹介します。

書式

(曜日), dd MMM YYYY HH:mm:ss GMT
または
(曜日), dd MMM YYYY HH:mm:ss +0000
(曜日), dd MMM YYYY HH:mm:ss -0000
RFC 1123ではUTC時間で表現されます。

Thu, 04 Oct 2014 23:59:45 GMT
Thu, 04 Apr 2014 12:35:20 +0900

C#による実装例

C#での実装例を紹介します。

UI

下図のUIを作成します。

コード

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;
using System.Globalization;

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

    private void button1_Click(object sender, EventArgs e)
    {
      DateTime dt = DateTime.Now;
      DateTimeFormatInfo dtfi = new DateTimeFormatInfo();

      textBox1.Text = dt.ToUniversalTime().ToString("ddd, dd MMM yyyy HH:mm:ss 'GMT'", dtfi);

      //別のロジック
      //DateTimeOffset dtOffset = new DateTimeOffset(dt, TimeZoneInfo.Local.GetUtcOffset(dt));
      //textBox1.Text = dtOffset.ToUniversalTime().ToString("ddd, dd MMM yyyy HH:mm:ss 'GMT'", dtfi);
    }

    private void button2_Click(object sender, EventArgs e)
    {
      DateTime dt = DateTime.Now;
      textBox1.Text = dt.ToUniversalTime().ToString("r");

    }
  }
}

解説

RFC 1123はUTC(GMT)時間での表記のためToUniversalTime()メソッドを呼び出しローカル時間をUTCに変換します。変換後ToString()メソッドでRFC 1123形式に整形して文字列を表示します。カスタム書式を用いて"ddd, dd MMM yyyy HH:mm:ss 'GMT'"と記述しても良いですが、RFC 1123形式の場合は標準の書式指定文字列"r"を用いても出力できます。

実行結果

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


[button1]をクリックするとRFC1123形式で現在の時刻を表示します。


[button2]をクリックしても同じ動作になります。

補足

    private void button1_Click(object sender, EventArgs e)
    {
      DateTime dt = DateTime.Now;
      textBox1.Text = dt.ToUniversalTime().ToString("ddd, dd MMM yyyy HH:mm:ss 'GMT'";
    }
実装したコードにはDateTimeのToString()メソッドの第二引数にDateTimeFormatInfoを与えていますが、上記コードのように、ToString()メソッドの第二引数を与えない場合、表示結果は下図の画面となります。曜日の名称が日本語で表示されていることが確認できます。RFC 1123では曜日名は英語名で表記するため、先のコードのようにToString()メソッドにはDateTimeFormatInfoを指定します。


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