« Dojoを利用しているツール | トップページ | グラフ/dojo.charting.Chart »

2007年4月 5日 (木)

Date/日時

DojoのDate/日時処理を用いるときは、dojo.date.formatをrequireする。

dojo.require("dojo.date.format");

日付 → 文字列

Dojoでは、JavaScriptのDateを文字列に変換する関数として、dojo.date.formatが提供されている。一つ目の引数にDateオブジェクト、2つ目の引数として変換方法を示したパラメータを渡す。

var sdate = dojo.date.format(new Date(), {selector:'dateOnly', locale:'ja-jp'});
=> 2007年4月5日木曜日
var sdate = dojo.date.format(new Date(), {selector:'dateOnly', formatLength:'short', locale:'ja-jp'});
=> 07/04/05

パラメータとして以下を指定できる。

  • selector: 'dateOnly' or 'timeOnly' or 'dateTime'のいずれかを指定する
  • locale: 'ja-jp', 'en-us', 'fr-fr, 'es', 'de-at', 'zh-cn'などのロケール。ハイフン「-」で繋ぐのに注意。指定しなければ、ブラウザのロケールが使われる
  • formatLength: 'full', 'short', 'long', 'medium'のいずれかを指定する
  • strict: trueまたはfalseを指定する
  • timePattern:'h:m:s'など、時間のフォーマットを指定する
  • datePattern:"ddMMyyyy"など、日付のフォーマットを指定する

timePattern、datePatternでは、以下を指定できる。

  • %a: 'Sun', '木', 短縮形の曜日
  • %A: 'Sunday', '木曜日', 曜日
  • %b: 'Jan', '4 月', 短縮形の月
  • %B: 'January', 4 月', 月
  • %c: 'Sunday, January 1, 2006 6:23:00 PM', '2007年4月5日木曜日 17時29分22秒GMT+09:00', 日時の文字列
  • %C: '20', 世紀
  • %d: '05', 日付
  • %D: '04/05/07', selector: 'dateOnly', formatLength: 'short'の日付文字列
  • %e: ' 5', 日付 (一桁のときに0を付けない)
  • %h: '4 月', 月 (%bと同じ)
  • %H: '17', 時
  • %I: '05', 時 (12時間表示)
  • %j: '095', その年から数えて何日目かを3桁で返す
  • %k: '17', 時
  • %l: ' 5', 時 (12時間表示)
  • %m: '04', 月
  • %M: '55', 分
  • %p: 'PM', '午後', AMかPMかを返す
  • %r: '06:23:00 PM', "%I:%M:%S %p"を返す
  • %R: '18:23', "%H:%M"を返す
  • %S: '00', 秒
  • %T: '18:23:00', "%H:%M:%S"を返す
  • %u: '7', 曜日を数字で返す
  • %U: '14' その年から数えて何週目かを返す
  • %w: '4', 日
  • %x: 'Sunday, January 1, 2006'
  • %X: '6:23:00 PM'
  • %y: '06', 年 (下2桁)
  • %Y: '2006', 年
  • %z: '+09:00', timezone
  • %%: '%', %のエスケープシーケンス指定

以下のように出力形式を指定することもできる。

dojo.date.strftime(new Date(), "%y/%m/%d");
dojo.date.format(new Date(), "%y/%m/%d");

文字列 → 日付

文字列から日付を得るには、dojo.date.parseを用いる。指定する文字列の形式は、dojo.date.formatで得られる文字列と同じである。

var date = dojo.date.parse("2006/8/11", {formatLength:'short', locale:'ja'});
var date = dojo.date.parse('2006/08/11", {formatLength:'medium', locale:'ja'});
var date = dojo.date.parse('2006/8/11", {formatLength:'medium', locale:'ja'});
var time = dojo.date.parse("12:30", {selector:'timeOnly', strict:true, timePattern:"h:mm"});

日時チェック

文字列で指定した日付または時間のフォーマットをチェックする関数が、dojo.validateに用意されている。日時チェックの関数を利用するときは、dojo.validate.datetimeをrequireする。

日付または時間のチェックをする関数は以下の4つが用意されている。

  • dojo.validate.isValidTime(value, flags)
  • dojo.validate.is12HourTime(value)
  • dojo.validate.is24HourTime(value)
  • dojo.validate.isValidDate(dateValue, format)

isValidTimeの引数flagsには、formatとしてフォーマット指定、amSymbol/pmSymbolとしてAM/PMのフォーマットを指定できる。amSympl/pmSymbolのデフォルト値は"AM"/"PM"である。

formatの指定には、以下のパターン文字を組み合わせて用いる。

  • h: 12時間指定
  • hh: 12時間指定, 1桁のとき0をつけて常に2桁指定
  • H: 24時間指定
  • HH: 24時間指定, 1桁のとき0をつけて常に2桁指定
  • m: 分
  • mm: 分, 1桁のとき0をつけて常に2桁指定
  • s: 秒
  • ss: 秒, 1桁のとき0をつけて常に2桁指定
  • t: 'AM' or 'PM'

is12HourTimeのフォーマットは、isValidaTimeのフォーマット指定で、format: ["h:mm:ss t", "h:mm t"]と同じとなる。is24HourTimeのフォーマットは、format: ["HH:mm:ss", "HH:mm"]と同じとなる。

以下に例を示す。この例は全てtrueになる例である。

dojo.require("dojo.validate.datetime");

dojo.validate.isValidTime('5:15:05 pm');
dojo.validate.isValidTime('5:15:05 p.m.', {pmSymbol: "P.M."});
dojo.validate.isValidTime('5:15 pm', {format: "h:mm t"});
dojo.validate.isValidTime('15:15:00', {format: "H:mm:ss"});

dojo.validate.is12HourTime('5:15:05 pm');
dojo.validate.is24HourTime('22:03:59');

isValidDateは日付のフォーマットをチェックする。引数のformatは、日付のフォーマットを以下のパターン文字を組み合わせて指定する。

  • YYYY: 年, 4桁指定
  • M: 月
  • MM: 月, 1桁のとき0をつけて常に2桁指定
  • D: 日
  • DD: 日, 1桁のとき0をつけて常に2桁指定
  • DDD: 001-365の日付
  • ww: 01-53の週
  • d: 1-7の曜日

以下に例を示す。この例は全てtrueになる例である。

dojo.validate.isValidDate("2005/08/06", "YYYY/MM/DD");
dojo.validate.isValidDate("2005-08-06", "YYYY-MM-DD");
dojo.validate.isValidDate("2005-W42-3", "YYYY-Www-d");
dojo.validate.isValidDate("2005-292", "YYYY-DDD");

« Dojoを利用しているツール | トップページ | グラフ/dojo.charting.Chart »

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/232684/5983053

この記事へのトラックバック一覧です: Date/日時:

« Dojoを利用しているツール | トップページ | グラフ/dojo.charting.Chart »