*時刻の扱い

-ページ: BugTrack
-投稿者: [[ぱんだ]]
-優先順位: 低
-状態: 提案
-カテゴリー: 本体新機能
-投稿日: 2002-11-30 (土) 16:41:38
-バージョン:

**メッセージ
PukiWiki内部で扱う時間(UNIXタイムスタンプ)をGMTに一本化し、書式化するときにローカル時間に変換する仕掛けを考えています。

***pukiwiki.ini.phpにZONETIME定数を追加(ローカル時間)
 define('ZONETIME',9 * 3600); // JST = GMT+9
***init.phpにLOCALZONE定数を追加(GMTと''サーバの''ローカル時間との差)
 define('LOCALZONE',date('Z'));
***内部で扱う数値(UNIXタイムスタンプ)はすべてGMTとする
-init.php
 -define('UTIME',time())
 +define('UTIME',time() - LOCALZONE)
-その他のスクリプト
time()ではなくUTIMEを使うことが望ましい
 -time()
 +UTIME
どうしてもその瞬間の時間が欲しいときはLOCALZONEを引いておく
 -time()
 +time() - LOCALZONE
ファイルの時間を得るときにLOCALZONEを引く
 -filemtime("...")
 +filemtime("...") - LOCALZONE
***UNIXタイムスタンプを書式化するときに、ZONETIMEを加える
-date()関数
 -date("...")
 +date("...",UTIME + ZONETIME)
-日付文字列を作るとき(よくあるパターン)
 +	$val += ZONETIME;
  	$ins_date = date($date_format,$val);
  	$ins_time = date($time_format,$val);
  	$ins_week = '('.$weeklabels[date('w',$val)].')';

**format_date
そこら中に散らばっている日時書式化ルーチンを関数にしてしまう
-format_date($val,$paren)
--$val : UNIXタイムスタンプ(GMT)
--$paren : TRUE:戻り値を括弧で囲む デフォルト=FALSE
 // 日時文字列を作る
 function format_date($val, $paren = FALSE) {
 	global $date_format,$time_format,$weeklabels;

 	$val += ZONETIME;

 	$date = date($date_format,$val);
 	$time = date($time_format,$val);
 	$week = '('.$weeklabels[date('w',$val)].')';

 	$str = "$date $week $time";
 	return $paren ? "($str)" : $str;
 }


----

#comment


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u12. HTML convert time: 0.050 sec.

OSDN