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やデータベースの記事なども担当。