Macromedia Flash非公式テクニカルノート

協定世界時(UTC)の日付を文字列で取得する(Date.toUTCString)

ID: FN0109003 Product: Flash

Platform: All
Version: 5.0

ActionScriptのDateオブジェクトには、協定世界時で年月日や時分秒の個別の値を取得するメソッド があります。ところが、これらをフォーマットされたひとつの文字列として取得するメソッドはありません。'Date.toString'メソッドは、ローカルのタイムゾーンにもとづいた日付と時刻を文字列で返します。ただ、そのフォーマットは、インターネット標準RFC822で定義されている仕様と異なります。

JavaScriptでは、'Date.toUTCString'メソッドが用意されています。これは、協定世界時の日付と時刻をRFC822に従った文字列で返すメソッドです。ActionScriptには、本稿作成段階(Flash Player 5.0r041/042)では、このメソッドを提供していません。'Date.toUTCString'メソッドを、Dateオブジェクトに定義するスクリプトの例をご紹介します。

オブジェクトにメソッドを定義するには、'prototype'プロパティを用います。'prototype'プロパティについては、『ActionScriptリファレンスガイド』またはオンラインヘルプ「ActionScriptリファレンス」で「ActionScriptを使用したスクリプトの記述」の章の「カスタムオブジェクトの使用」の項をご参照ください。

// [DateオブジェクトにtoUTCStringメソッドを定義する]
// DateオブジェクトのprototypeプロパティにメソッドtoUTCStringを設定
Date.prototype.toUTCString = xToUTCString;
// function定義
function xToUTCString () {
  //協定世界時の各値をRFC822に従ったフォーマットの文字列に変換
  var sUTCDay = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"][this.getUTCDay()];
  var sUTCDate = this.getUTCDate().toString();
  var lUTCMonth = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
  var sUTCMonth = lUTCMonth[this.getUTCMonth()];
  var sUTCYear = this.getUTCFullYear().toString();
  var sUTCHours = (100+this.getUTCHours()).toString().substr(-2);
  var sUTCMinutes = (100+this.getUTCMinutes()).toString().substr(-2);
  var sUTCSeconds = (100+this.getUTCSeconds()).toString().substr(-2);
  var sUTCTheDay = sUTCDay+", "+sUTCDate+" "+sUTCMonth+" "+sUTCYear;
  var sUTCTime = sUTCHours+":"+sUTCMinutes+":"+sUTCSeconds;
  return sUTCTheDay+" "+sUTCTime+" GMT";
}

'function'で行っている処理自体は、個別に取得した協定世界時の値をRFC822にもとづくフォーマットの文字列に変換し、最終的にそれらをひとつのストリングに連結して返しているだけです。個々のメソッドについては、「ActionScript辞書」をご参照ください。実行結果は以下のようになります。

trace (new Date().toUTCString());
//出力ウィンドウの結果
Wed, 5 Sep 2001 08:00:00 GMT

_____

作成者: 野中文雄
協力者: Ginga Baba
更新日: 2002年6月22日 スクリプトの若干の修正
更新日: 2001年9月6日 字句とスクリプトの若干の変更
作成日: 2001年9月5日


Copyright © 2001-2006 Fumio Nonaka.  All rights reserved.