コードをコピー コードは次のとおりです。
echo microtime();
echo mktime(0,0,0,1,1,1970);と同じです。 >
ここでの出力は 1283657290、1283657100、0.88533200 1283657290、-25200 です。最後の値から判断すると、ここで返されたタイムスタンプはタイム ゾーンによって調整されていることがわかります。これは、私が中国にいたときの 1970 年 1 月 1 日の 0 時であり、まだ 0 時に達していません。ここでの時間は負の数になり、全体の値は -8*3600 に等しくなります。
コードは次のとおりです: echo date ( "H i l d F" ,1283657100);
echo gmdate("H i l d F",1283657100);
echo strftime("%Hh%M %A %d %b" ,1283657100);
/ /strftime() は、特殊な書式設定文字の前にパーセント記号 % を付ける必要があることを除いて、date() と同様に機能します。
echo strtotime("2010-9-5 11:25:00");
var_dump(getdate (time()));
出力は 11 25 9 月 5 日日曜日、03 25 9 月 5 日日曜日、11 時 25 分、9 月 5 日日曜日、1283657100、array(11) {
["秒"]=>
int(9)
//時刻の書式設定function sgmdate($dateformat, $timestamp =' ', $format=0) { global $_SCONFIG, $_SGLOBAL; if(empty($timestamp)) {
$timestamp = $_SGLOBAL['timestamp']}
$timeoffset = strlen($_SGLOBAL['member']['timeoffset'])>0?intval($_SGLOBAL['member']['timeoffset']):intval($_SCONFIG['timeoffset'] );
$result = '';
if($format) {
$time = $_SGLOBAL['timestamp'] - $timestamp; {
$result = gmdate($dateformat, $timestamp $timeoffset * 3600);
} elseif ($time > 3600) {
$result = intval($time/3600).lang('時間' ).lang('前');
} elseif ($time > 60) {
$result = intval($time/60).lang('分').lang('前' );
} elseif ($time > 0) {
$result = $time.lang('second').lang('before');
} else {
$result = lang( 'now');
}
} else {
$result = gmdate($dateformat, $timestamp $timeoffset * 3600);
return $result;まず、システムの現在時刻と渡した時刻 (通常はデータベース内の時刻) を確認します。 2010-9-4 21:00:00 など)。時差が 1 日以内の場合は、2 時間前など、結論が直接導き出されます。1 日を超える場合は、gmdate が呼び出されます。ここだけはわかりません。なぜ date($timestamp) を直接呼び出すのではなく、この奇妙な関数を呼び出すのでしょうか?これは一体どういう意味でしょうか?
gmdate
フィンランド (GMT 0200) で実行すると、以下の最初の行は「Jan 01 1998 00:00:00」を出力し、2 行目は「Dec 31 1997 22:00:00」を出力します。
コードをコピー
コードは次のとおりです。
つまり、gmdate は時差を考慮します。数日前ではなく、標準の時刻形式がここに出力されます。 次に、uhome の function_common 内の関数に注目します
コードをコピーします
コードは次のとおりです:
/ /String 時間
if(gmdate('H:i', $_SGLOBAL['timestamp'] $_SCONFIG['timeoffset'] * 3600) != date('H:i', $_SGLOBAL['timestamp'] )) { $time = $time - $_SCONFIG['timeoffset'] * 3600; } } return
}
この機能は機能が少ないのですが、非常に見にくいです。これは、時刻文字列をタイムスタンプに変換するためです。たとえば、ここで入力したのは 2010 9 4 21:08 です。$time の値は、この時刻から 1970 年 1 月 1 日 00:00:00 GMT までの時差です。考慮すべき時差は次のとおりです。 $_SGLOBAL[''timestamp] の値は実際には $time と同じ方法で計算されますが、値が若干異なる場合があります。 $_SCONFIG['timeoffset'] は構成テーブル内にあり、その現在の値は 8 です。システムのタイムゾーンが正しいか間違っている場合があり、$_SCONFIG['timeoffset'] を通じて確認する必要があります。 gmdate は、受信したタイムスタンプ (プログラムが実行されている場所のタイムスタンプ) をシステムのタイムゾーンに渡して、その時点のグリニッジの時刻を取得します。システムのタイムゾーンが正しく設定されている場合、これはちょうどプラス 1 とマイナス 1 であり、次の値と等しくなります (実際、ここでの $_SGLOBAL[''timestamp] の値は無関係です)。正常であれば $time を変更する必要はありません。異常であれば $time を減らす必要があります。しかし、もう一度言いますが、これは一体何を意味するのでしょうか?