*時刻の扱い

-ページ: 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
getdate()関数はgetdate(UTIME)に
 -getdate()
 +getdate(UTIME)

***UNIXタイムスタンプを書式化するときに、ZONETIMEを加える
-date()関数
 -date("...")
 +get_date("...") get_date()関数は下記
 
-日付文字列を作るとき(よくあるパターン)
 +	$val += ZONETIME;
  	$ins_date = date($date_format,$val);
  	$ins_time = date($time_format,$val);
  	$ins_week = '('.$weeklabels[date('w',$val)].')';

**そこら中に散らばっている日時書式化ルーチンを関数にしてしまう
-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;
 }
-get_date($format,$timestamp)  date()関数の代替
--$format : フォーマット文字列
--$timestamp : UNIXタイムスタンプ(GMT) 省略時は現在の日時
 // 日時を得る
 function get_date($format,$timestamp = NULL)
 {
 	$time = ($timestamp === NULL) ? UTIME : $timestamp;
 	$time += ZONETIME;
 	
 	return date($format,$time);
 }

----

#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.044 sec.

OSDN