php日付と時間の処理-鄭阿奇(続)

6701 ワード

1.UNIXタイムスタンプphpdはデータを処理し、特にデータベース内の時間型データをフォーマットする場合は、まず時間型のデータをUNIXタイムスタンプに変換して処理する必要があります.異なるデータベース・システムによる時間型のデータ
変換は互換性がありません.この場合、UNIXタイムスタンプに変換する必要があります.このように京は異なるデータベースシステムのプラットフォーム間性を実現した.
2.タイムスタンプをタイムスタンプに変換文字列で表される日付と時間をタイムスタンプの形式に変換する場合はstrtotime()関数を使用します.
構文の形式は次のとおりです.
int strtotime(string $time [, int $now ])
例:
 
  
echo strtotime('2009-03-05'); // 1236211200
echo strtotime('2009-03-05 10:24:30'); // 1236248670
echo strtotime("10 September 2000"); // 968544000
?>

もう1つの取得日のUNIXタイムスタンプの関数はmktime()関数であり、
構文の形式は次のとおりです.
int mktime([int $hour [, int $minute [, int $second [, int $month [, int $day [, int $year]]]]]])
3.取得日時
1.data()関数
は、指定したフォーマットに従って、特定の日付および時間文字列にタイムスタンプを変換します.
構文の形式は次のとおりです.
string date(string $format [, int $timestamp ])
説明:
$formatは変換後の日付と時間のフォーマットを指定します.
$timestampは変換が必要なタイムスタンプであり、省略するとローカルの現在時間、すなわちデフォルト値がtime()関数の値を使用します.
time()関数は、現在のタイムスタンプを返します.
date関数の$formatパラメータの値は以下の表に示す.
表4.6 date()関数でサポートされるフォーマットコード
文字
説明
戻り値の例
d
月の中の何日目、先頭の0の2桁の数字があります
01~31
D
曜日の数日目は3文字で
MonからSun
j
月の数日目にはゼロの先頭がありません
1~31
l
曜日、完全なテキストフォーマット
Sunday~Saturday
N
ISO-8601形式数字表示の曜日
1(月)~7(日)
S
毎月の日数の後の英語の接尾辞は、2文字で表されます.
st、nd、rdまたはthは、jとともに用いることができる
w
曜日の数日目、数字は
0(日曜日)~6(土曜日)
z
年の日付
0~366
W
ISO-8601フォーマット年の第数週、毎週月曜日から
例:42(その年の42週目)
F
月、JanuaryやMarchなどの完全なテキストフォーマット
January~December
m
数字は月を表し、先頭ゼロがあります.
01~12
M
3文字の略語で表す月
Jan~Dec
n
数値が示す月、先頭ゼロなし
1~12
t
所定の月の日数
28~31
L
閏年かどうか
閏年が1の場合、それ以外の場合は0
o
ISO-8601形式の年数.これはYの値と同じですが、ISOの曜日(W)が前年または翌年であれば、その年を使います
例:1999または2003
Y
4桁の数字が完全に表示される年
例:1999または2003
y
2桁の数字で表示される年
例:99または03
a
小文字の午前と午後の値
amまたはpm
A
大文字の午前と午後の値
AMまたはPM
B
Swatchインターネット標準時
000~999
g
時間、12時間フォーマット、先頭ゼロなし
1~12
G
時間、24時間フォーマット、先頭ゼロなし
0~23
h
時間、12時間フォーマット、先頭ゼロ
01~12
H
時間、24時間フォーマット、先頭ゼロ
00~23
i
先頭ゼロの分数
00~59
s
秒数、先頭ゼロ
00~59
e
タイムゾーンフラグ
例:UTC,GMT,Atlantic/Azores
I
サマータイムかどうか
サマータイムが1の場合は0
O
グリニッジとの時間差の時間数
例:+0200
P
グリニッジ時間(GMT)との差は、時間と分をコロンで区切る
例:+02:00
T
ローカルタイムゾーン
例えば、EST、MDT
Z
タイムゾーンオフセットの秒数.UTC西側のタイムゾーンオフセット量は常に負であり、UTC東側のタイムゾーンオフセット量は常に正である
-43200~43200
c
ISO 8601形式の日付
2004-02-12T15:19:21+00:00
r
RFC 822形式の日付
Thu, 21 Dec 2000 16:01:07 +0200
U
UNIX紀元から現在までの秒数
time()関数
2.getdate()関数
日付と時刻の情報配列を取得できます.
構文の形式は次のとおりです.
array getdate([ int $timestamp ])
説明:$timestampは変換するタイムスタンプであり、指定しない場合は現在のタイムを使用します.
関数は$timestampに基づいて日付と時間情報を含む配列を返し、配列のキー名と値は表4.7に示す.
キー名
説明
値の例
seconds
秒の数字表示
0~59
minutes
分の数字表示
0~59
hours
時間の数字表示
0~23
mday
月の数日目の数字は
1~31
wday
曜日の数日目の数字は
0(日曜日を表す)~6(土曜日を表す)
mon
月の数字は
1~12
year
4桁の数字で表示される完全な年
例:1999または2003
yday
1年の数日目の数字は
0~365
weekday
曜日の完全テキスト表示
Sunday~Saturday
month
月の完全テキスト表示
January~December
0
UNIX紀元から現在までの秒数
システム関連、典型的な値-21147483648~2147483647
4.6.4その他の日付と時刻関数
1.日付と時刻の計算
 
  
$oldtime=mktime(0,0,0,9,24,2008);
$newtime=mktime(0,0,0,10,12,2008);
$days=($newtime-$oldtime)/(24*3600); //
echo $days; // 18
?>

2.検査日
checkdate()関数は、日付データが有効かどうかを確認するために使用できます.構文フォーマットは次のとおりです.
bool checkdate( int $month , int $day , int $year)
 
  
var_dump(checkdate(12,31,2000)); // bool(TRUE)
var_dump(checkdate(2,29,2001)); // bool(FALSE)
?>

3.タイムゾーンの設定
システムのデフォルトはグリニッジ標準時間なので、現在の時間を表示するとローカル時間と異なる場合があります.PHPはタイムゾーンを変更できる関数date_を提供します.default_timezone_set(),
構文の形式は次のとおりです.
bool date_default_timezone_set (string $timezone_identifier)
パラメータ$timezone_identifierは指定するタイムゾーンです.
中国大陸で利用可能な値はAsia/Chongqing,Asia/shanghai,Asia/Urumqi(重慶,上海,ウルムチの順).北京時間はPRCが使えます.
4.5インスタンス-カレンダの生成
 
  
$year=@$_GET['year']; //
$month=@$_GET['month']; //
if(empty($year))
$year=date("Y"); //
if(empty($month))
$month=date("n"); //
$day=date("j"); //
$wd_ar=array(" "," "," "," "," "," "," "); //
$wd=date("w",mktime(0,0,0,$month,1,$year)); //
//
$y_lnk1=$year<=1970?$year=1970:$year-1; //
$y_lnk2=$year>=2037?$year=2037:$year+1; //
//
$m_lnk1=$month<=1?$month=1:$month-1; //
$m_lnk2=$month>=12?$month=12:$month+1; //
echo "";
// , “”
echo "";
// , “”
echo "";
echo "";
for($i=0;$i<7;$i++)
{
echo " "; //
}
echo "";
$tnum=$wd+date("t",mktime(0,0,0,$month,1,$year)); //
for($i=0;$i{
$date=$i+1-$wd; //
if($i%7==0) echo ""; //
echo " ";
if($i%7==6) echo " "; //
}
echo "
<".$year." ><".$month." >
$wd_ar[$i]
";
if($i>=$wd)
{
if($date==$day&&$month==date("n")) //
echo "".$day."";
else
echo $date; //
}
echo "
";
?>