1. 程式人生 > >PHP日期時間格式字串

PHP日期時間格式字串

格式字元 說明 示例
d 一個月中的第幾天,帶前導0 01到31
j 一個月中的第幾天,不帶前導0 1到31
D 星期的文字表示,簡寫 Mon到Sun
l 星期的文字表示,全拼 Sunday到Saturday
S 一個月的第幾天的英文字尾(2位),解析時會忽略 st、nd、rd或th
M 月份的文字表示,簡寫 Jan到Dec
F 月份的文字表示,全拼 January到December
m 月份的數值表示,帶前導0 01-12
n 月份的數值表示,不帶前導0 1-12
Y 4位數字表示的年 2018、1990
y 2位數字表示的年 18、90
a 上午或下午,小寫 am、pm
A 上午或下午,大寫 AM、PM
g 12小時制的小時,不帶前導0 1到12
h 12小時制的小時,帶前導0 01到12
G 24小時制的小時,不帶前導0 0到23
H 24小時制的小時,帶前導0 00到23
i 分鐘,有前導 0 00到59
s 秒,有前導 0 00到59
u 微秒,最多6為數字 45654321
e/T 時區名稱 UTC、GMT、EST、MDT
O 以 UTC 時區為基準的小時偏移量 -0500
P 以 UTC 為基準的小時和分鐘的偏移量(冒號分隔) -05:00
U 從1970 00:00:00 GMT開始計算的時間秒數
# 代表分隔符中的任意一個(分號、冒號、斜槓、點、逗號、減號、小括號)
? 隨機位元組,如果是UTF8字元,可能需要多個? a、b、&
* 隨機位元組,直至遇到下一個分隔符號或數值
!

如果只包含!,則將所有欄位(年、月、日、時、分、秒、微秒、時區)設定為Unix紀元時間;

如果不止包含!,則在!左側的欄位,以及格式字串中不包含的欄位將設定為Unix紀元時間;

如果不包含!,則會將格式字串中不包含的欄位設定為當前時間

| 將未被解析的欄位(年、月、日、時、分、秒、微秒、時區)設定為Unix紀元時間
+ 如果日期時間字串中包含除了格式字元之外的其他資料的話,不會發出一個錯誤,而是發出一個警告
<?php
$date=new DateTime("2018-1-2 02:06:03:235842pm EST");
echo $date->format("d"),",",$date->format("j"),"\n";
echo $date->format("D"),",",$date->format("l"),"\n";
echo $date->format("S"),",",$date->format("z"),"\n";
echo $date->format("M"),",",$date->format("F"),"\n";
echo $date->format("m"),",",$date->format("n"),"\n";
echo $date->format("Y"),",",$date->format("y"),"\n";
echo $date->format("a"),",",$date->format("A"),"\n";
echo $date->format("h"),",",$date->format("g"),"\n";
echo $date->format("H"),",",$date->format("G"),"\n";
echo $date->format("i"),",",$date->format("s"),",",$date->format("u"),"\n";
echo $date->format("e"),",",$date->format("T"),"\n";
echo $date->format("O"),",",$date->format("P"),"\n";
echo $date->format("U"),"\n";
echo $date->format("Y-m-d"),"\n";
$date=DateTime::createFromFormat("Y/m?#d h:i:s,ua T","2018/1a-2 02:06:03,235842pm EST");
if($date!=false){
    echo $date->format("Y-m-d"),"\n";
}
$date=DateTime::createFromFormat("!","");
if($date!=false){
    echo $date->format("Y-m-d H:i:s"),"\n";
}
$date=DateTime::createFromFormat("Y/m!?#d h:i:s,ua *","2018/1a-2 02:06:03,235842pm EST");
if($date!=false){
    echo $date->format("Y-m-d H:i:s"),"\n";
}
$date=DateTime::createFromFormat("Y-m-j|","2018-11-02");
if($date!=false){
    echo $date->format("Y-m-d H:i:s"),"\n";
}
$date=DateTime::createFromFormat("Y-m-j","2018-11-02");
if($date!=false){
    echo $date->format("Y-m-d H:i:s"),"\n";
}
$date=DateTime::createFromFormat("+Y-m-j","2018年1月2日");
var_dump(DateTime::getLastErrors());
$date=DateTime::createFromFormat("Y-m-j","2018年1月2日");
var_dump(DateTime::getLastErrors());

?>