- 追加された行はこの色です。
- 削除された行はこの色です。
*時刻の扱い
-ページ: BugTrack
-投稿者: [[ぱんだ]]
-優先順位: 低
-状態: 提案
-カテゴリー: 本体新機能
-投稿日: 2002-11-30 (土) 16:41:38
-バージョン:
**メッセージ
PukiWiki内部で扱う時間(UNIXタイムスタンプ)をGMTに一本化し、書式化するときにローカル時間に変換する仕掛けを考えています。
-pukiwiki.ini.phpにZONETIME定数を追加
***pukiwiki.ini.phpにZONETIME定数を追加(ローカル時間)
define('ZONETIME',9 * 3600); // JST = GMT+9
-init.phpにLOCALTIME定数を追加(GMTとサーバのローカル時間との差)
define('LOCALZONE',date('Z') * 3600);
-内部で扱う数値(UNIXタイムスタンプ)はすべてGMTとする
--init.php
***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を加える
***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