PHP 第五週函式學習記錄

乄Z發表於2020-07-05

checkdate()

作用

函式用於驗證格利高裡日期。

用法

checkdate(month,day,year);
month    必需。一個從 112 的數字,規定月。
day        必需。一個從 131 的數字,規定日。
year    必需。一個從 132767 的數字,規定年。

測試案例

var_dump(checkdate(12,31,-400));
echo "<br>";
var_dump(checkdate(2,29,2003));
echo "<br>";
var_dump(checkdate(2,29,2004));

結果

bool(false)
bool(false)
bool(true)

date_add()

作用

函式新增日、月、年、時、分和秒到一個日期。

用法

date_add(object,interval);
object    必需。規定 date_create() 返回的 DateTime 物件。
interval    必需。規定 DateInterval 物件。

測試案例

$date=date_create("2013-03-15");
date_add($date,date_interval_create_from_date_string("40 days"));
echo date_format($date,"Y-m-d");

結果

2013-04-24

date_create_from_format()

作用

函式返回一個根據指定格式進行格式化的新的 DateTime 物件。

用法

date_create_from_format(format,time,timezone);

引數    描述
format    必需。規定要使用的格式。format 引數字串可以使用下列的字元:
d - 一個月中的第幾天,帶前導零
j - 一個月中的第幾天,不帶前導零
D - 一週中的某天(Mon - Sun)
I - 一週中的某天(Monday - Sunday)
S - 一個月中的第幾天的英語字尾(st, nd, rd, th)
F - 月份名稱(January - December)
M - 月份名稱(Jan - Dec)
m - 月份(01 - 12)
n - 月份(1 - 12Y - 年份(例如 2013)
y - 年份(例如 13)
a 和 A - am 或 pm
g - 12 小時制,不帶前導零
h - 12 小時制,帶前導零
G - 24 小時制,不帶前導零
H - 24 小時制,帶前導零
i - 分,帶前導零
s - 秒,帶前導零
u - 微秒(多達六個數字)
e、OPT - 時區識別符號
U - 自 Unix 紀元以來經過的秒數
(空格)
# - 下列分隔符之一:;:/.,-()
? - 一個隨機位元組
* - 隨機位元組直到下一個分隔/數字
! - 重置所有欄位到 Unix 紀元
| - 如果所有欄位都還沒被解析,則重置所有欄位到 Unix 紀元
+ - 如果存在,字串中的尾隨資料將導致警告,不是錯誤
time    必需。規定一個日期/時間字串。NULL 表示當前的日期/時間。
timezone    可選。規定 time 的時區。預設為當前時區。

測試案例

$date=date_create_from_format("j-M-Y","15-Mar-2013");
echo date_format($date,"Y/m/d");

結果

2013/03/15

date_create()

作用

函式返回一個新的 DateTime 物件。

用法

date_create(time,timezone);
time    可選。規定一個日期/時間字串。NULL 表示當前的日期/時間。
timezone    可選。規定 time 的時區。預設是當前時區。

測試案例

$date=date_create("2013-03-15");
echo date_format($date,"Y/m/d");

結果

2013/03/15

date_date_set()

作用

函式設定一個新的日期。

用法

date_date_set(object,year,month,day);
object    必需。規定一個由 date_create() 返回的 DateTime 物件。
year    必需。規定日期中的年。
month    必需。規定日期中的月。
day        必需。規定日期中的日。

測試案例

$date=date_create();
date_date_set($date,2020,10,30);
echo date_format($date,"Y/m/d");

結果

2020/10/30

date_default_timezone_get()

作用

函式返回指令碼中所有日期/時間函式使用的預設時區。

用法

date_default_timezone_get();

測試案例

echo date_default_timezone_get();

結果

Asia/Chongqing

date_default_timezone_set()

作用

函式設定指令碼中所有日期/時間函式使用的預設時區

用法

date_default_timezone_set(timezone);

測試案例

date_default_timezone_set("Asia/Shanghai");
echo date_default_timezone_get();

結果

Asia/Shanghai

date_diff()

作用

函式返回兩個 DateTime 物件間的差值

用法

date_diff(datetime1,datetime2,absolute);

測試案例

$date1=date_create("2013-03-15");
$date2=date_create("2013-12-12");
$diff=date_diff($date1,$date2);
echo $diff->format("%R%a days");

結果

+272 days

date_format()

作用

函式返回一個根據指定格式進行格式化的日期。

用法

date_format(object,format);

測試案例

$date=date_create("2013-03-15");
echo date_format($date,"Y/m/d H:i:s");

結果

2013/03/15 00:00:00

date_get_last_errors()

作用

函式返回解析日期字串時找到的警告/錯誤。

用法

date_get_last_errors();

測試案例

date_create("gyuiyiuyui%&&/");
print_r(date_get_last_errors());

結果

Array ( 
    [warning_count] => 1 
    [warnings] => Array ( 
        [6] => Double timezone specification
    ) 
    [error_count] => 5 
    [errors] => Array ( 
        [0] => The timezone could not be found in the database
        [10] => Unexpected character
        [11] => Unexpected character 
        [12] => Unexpected character 
        [13] => Unexpected character 
    )
)

date_interval_format()

作用

函式是 DateInterval::format() 的別名 函式用於格式化時間間隔。

用法

DateInterval::format(format);

測試案例

$date1=date_create("2013-01-01");
$date2=date_create("2013-02-10");
$diff=date_diff($date1,$date2);

// %a 輸出兩個日期間隔的總天數
echo $diff->format("日期間隔的總天數為: %a 天。");

結果

日期間隔的總天數為: 40 天。

date_isodate_set()

作用

date_isodate_set() 函式根據 ISO 8601 標準設定日期,使用周和天的偏移量(而不是使用一個規定的日期)。

用法

date_isodate_set(object,year,week,day);

day    可選。規定離一週中第一天的偏移量。預設為 1

測試案例

$date=date_create();

date_isodate_set($date,2013,5);
echo date_format($date,"Y-m-d") . "<br>";

date_isodate_set($date,2013,5,2);
echo date_format($date,"Y-m-d");

結果

2013-01-28
2013-01-29

date_modify()

作用

函式修改時間戳。

用法

date_modify(object,modify);

測試案例

$date=date_create("2013-05-01");
date_modify($date,"+15 days");
echo date_format($date,"Y-m-d");

結果

2013-05-16

date_offset_get()

作用

函式返回時區偏移。

用法

date_offset_get(object);

測試案例

$winter=date_create("2013-12-31",timezone_open("Europe/Oslo"));
$summer=date_create("2013-06-30",timezone_open("Europe/Oslo"));

echo date_offset_get($winter) . " seconds.<br>";
echo date_offset_get($summer) . " seconds.";

結果

3600 seconds.
7200 seconds.

date_parse_from_format()

作用

函式根據指定的格式返回一個包含指定日期資訊的關聯陣列。

用法

date_parse_from_format(format,date);

測試案例

print_r(date_parse_from_format("mmddyyyy","05122013"));
echo "<br><br>";
print_r(date_parse_from_format("j.n.Y H:iP","12.5.2013 14:35+02:00"));

結果

Array ( 
    [year] => 
    [month] => 12
    [day] => 13 
    [hour] => 
    [minute] =>
    [second] => 
    [fraction] =>
    [warning_count] => 0
    [warnings] => Array ( ) 
    [error_count] => 1
    [errors] => Array ( [8] => Data missing ) [is_localtime] => 
)

Array ( 
    [year] => 2013
    [month] => 5 
    [day] => 12 
    [hour] => 14
    [minute] => 35
    [second] => 0 
    [fraction] => 
    [warning_count] => 0 
    [warnings] => Array ( ) 
    [error_count] => 0
    [errors] => Array ( )
    [is_localtime] => 1
    [zone_type] => 1 
    [zone] => -120 
    [is_dst] => 
)

date_parse()

作用

函式返回一個包含指定日的詳細資訊的關聯陣列。

用法

date_parse(date);

測試案例

print_r(date_parse("2013-05-01 12:30:45.5"));

結果

Array ( 
    [year] => 2013
    [month] => 5 
    [day] => 1 
    [hour] => 12 
    [minute] => 30
    [second] => 45 
    [fraction] => 0.5 
    [warning_count] => 0
    [warnings] => Array ( ) 
    [error_count] => 0 
    [errors] => Array ( ) 
    [is_localtime] => 
)

date_sub()

作用

函式從指定日期減去日、月、年、時、分和秒。

用法

date_sub(object,interval);
object    必需。規定一個由 date_create() 返回的 DateTime 物件。
interval    必需。規定一個 DateInterval 物件。

測試案例

$date=date_create("2013-03-15");
date_sub($date,date_interval_create_from_date_string("40 days"));
echo date_format($date,"Y-m-d");

結果

2013-02-03

date_sun_info()

作用

 函式返回一個包含有關指定日期與地點的日出/日落和黃昏開始/黃昏結束的資訊的陣列。

用法

date_sun_info(timestamp,latitude,longitude);
timestamp    必需。規定時間戳。
latitude    必需。規定緯度。
longitude    必需。規定經度。

測試案例

echo "<h3>Date: 1st January, 2013</h3>";
$sun_info=date_sun_info(strtotime("2013-01-01"),31.7667,35.2333);
foreach ($sun_info as $key=>$val)
{
   echo "$key: " . date("H:i:s",$val) . "<br>";
}
echo "<h3>Date: 1st June, 2013</h3>";
$sun_info=date_sun_info(strtotime("2013-06-01"),31.7667,35.2333);
foreach ($sun_info as $key=>$val)
{
   echo "$key: " . date("H:i:s",$val) . "<br>";
}

結果

Date: 1st January, 2013
sunrise: 23:39:11
sunset: 09:46:51
transit: 04:43:01
civil_twilight_begin: 23:12:29
civil_twilight_end: 10:13:33
nautical_twilight_begin: 22:42:09
nautical_twilight_end: 10:43:53
astronomical_twilight_begin: 22:12:28
astronomical_twilight_end: 11:13:34
Date: 1st June, 2013
sunrise: 22:34:03
sunset: 12:39:59
transit: 05:37:01
civil_twilight_begin: 22:06:21
civil_twilight_end: 13:07:40
nautical_twilight_begin: 21:32:35
nautical_twilight_end: 13:41:27
astronomical_twilight_begin: 20:56:19
astronomical_twilight_end: 14:17:42

date_sunrise()

作用

函式返回指定日期與地點的日出時間。

用法

date_sunrise(timestamp,format,latitude,longitude,zenith,gmtoffset);

timestamp    必需。規定要計算日出時間的日期時間戳。
format    可選。規定如何返回結果:
        SUNFUNCS_RET_STRING(以 string 格式返回結果,比如 16:46)(預設)
        SUNFUNCS_RET_DOUBLE(以 float 格式返回結果,比如 16.78243132SUNFUNCS_RET_TIMESTAMP(以 integer 格式(時間戳)返回結果,比如 1095034606)
latitude    可選。規定地點的緯度。預設是指北緯。因此如果要指定南緯,必須傳遞一個負值。
longitude    可選。規定地點的經度。預設是指東經。因此如果要指定西經,必須傳遞一個負值。
zenith    可選。預設為 date.sunrise_zenith。
gmtoffset    可選。規定 GMT 與本地時間的差值。單位是小時。

測試案例

//Calculate the sunrise time for Lisbon, Portugal
//Latitude: 38.4 North
//Longitude: 9 West
//Zenith ~= 90
//offset: +1 GMT

echo("<h2>Lisbon, Portugal</h2>");
echo("Date: " . date("D M d Y"));
echo("<br>Sunrise time: ");
echo(date_sunrise(time(),SUNFUNCS_RET_STRING,38.4,-9,90,1));
echo("<br>Sunset time: ");
echo(date_sunset(time(),SUNFUNCS_RET_STRING,38.4,-9,90,1));
?>

結果

Lisbon, Portugal
Date: Sat Sep 21 2013
Sunrise time: 07:26
Sunset time: 19:30

date_sunset()

作用

函式返回指定日期與地點的日落時間

用法

date_sunset(timestamp,format,latitude,longitude,zenith,gmtoffset);

測試案例

//Calculate the sunrise time for Lisbon, Portugal
//Latitude: 38.4 North
//Longitude: 9 West
//Zenith ~= 90
//offset: +1 GMT

echo("<h2>Lisbon, Portugal</h2>");
echo("Date: " . date("D M d Y"));
echo("<br>Sunrise time: ");
echo(date_sunrise(time(),SUNFUNCS_RET_STRING,38.4,-9,90,1));
echo("<br>Sunset time: ");
echo(date_sunset(time(),SUNFUNCS_RET_STRING,38.4,-9,90,1));
?>

結果

Lisbon, Portugal
Date: Sat Sep 21 2013
Sunrise time: 07:26
Sunset time: 19:30

date_time_set()

作用

函式用於設定時間

用法

date_time_set(object,hour,minute,second);

測試案例

$date=date_create("2013-05-01");

date_time_set($date,13,24);
echo date_format($date,"Y-m-d H:i:s") . "<br>";

date_time_set($date,12,20,55);
echo date_format($date,"Y-m-d H:i:s");
?>

結果

2013-05-01 13:24:00
2013-05-01 12:20:55

date_time_set()

作用

函式用於設定時間

用法

date_time_set(object,hour,minute,second);

測試案例

$date=date_create("2013-05-01");

date_time_set($date,13,24);
echo date_format($date,"Y-m-d H:i:s") . "<br>";

date_time_set($date,12,20,55);
echo date_format($date,"Y-m-d H:i:s");

結果

2013-05-01 13:24:00
2013-05-01 12:20:55

date_timestamp_get()

作用

 函式返回 Unix 時間戳。

用法

date_timestamp_get(object);

測試案例

$date=date_create();
echo date_timestamp_get($date);

結果

1593657268

date_timestamp_get()

作用

 函式返回 Unix 時間戳。

用法

date_timestamp_get(object);

測試案例

$date=date_create();
echo date_timestamp_get($date);

結果

1593657268

date_timestamp_set()

作用

函式設定基於 Unix 時間戳的日期和時間

用法

date_timestamp_set(object,unixtimestamp);

測試案例

$date=date_create();
date_timestamp_set($date,1371803321);
echo date_format($date,"U = Y-m-d H:i:s");

結果

1371803321 = 2013-06-21 04:28:41

date_timezone_get()

作用

函式返回給定 DateTime 物件的時區。

用法

date_timezone_get(object);

測試案例

$date=date_create(null,timezone_open("Europe/Paris"));
$tz=date_timezone_get($date);
echo timezone_name_get($tz);

結果

Europe/Paris

date_timezone_set()

作用

函式 DateTime 物件的時區

用法

date_timezone_set(object,timezone);

測試案例

$date=date_create("2013-05-25",timezone_open("Indian/Kerguelen"));
echo date_format($date,"Y-m-d H:i:sP") . "<br>";

date_timezone_set($date,timezone_open("Europe/Paris"));
echo date_format($date,"Y-m-d H:i:sP");

結果

2013-05-25 00:00:00+05:00
2013-05-24 21:00:00+02:00

date_timezone_set()

作用

函式 DateTime 物件的時區

用法

date_timezone_set(object,timezone);

測試案例

$date=date_create("2013-05-25",timezone_open("Indian/Kerguelen"));
echo date_format($date,"Y-m-d H:i:sP") . "<br>";

date_timezone_set($date,timezone_open("Europe/Paris"));
echo date_format($date,"Y-m-d H:i:sP");

結果

2013-05-25 00:00:00+05:00
2013-05-24 21:00:00+02:00

date()

作用

函式格式化本地日期和時間,並返回格式化的日期字串。

用法

date(format,timestamp);

測試案例

// 設定時區
date_default_timezone_set("PRC");

// 列印當前時間  PHP_EOL 換行符,相容不同系統
echo date("Y-m-d H:i:s")  . PHP_EOL;
echo date("Y 年 m 月 d 日 H 點 i 分 s 秒")  . PHP_EOL;
// 指定時間
$time = strtotime("2018-01-18 08:08:08");  // 將指定日期轉成時間戳 
echo date("Y-m-d H:i:s", $time)  . PHP_EOL;

結果

2020-07-03 16:53:03
202007031653032018-01-18 08:08:08

getdate()

作用

 函式返回某個時間戳或者當前本地的日期/時間的日期/時間資訊。

用法

getdate(timestamp);

測試案例

print_r(getdate());

結果

Array
(
    [seconds] => 4
    [minutes] => 54
    [hours] => 8
    [mday] => 3
    [wday] => 5
    [mon] => 7
    [year] => 2020
    [yday] => 184
    [weekday] => Friday
    [month] => July
    [0] => 1593766444
)

gettimeofday()

作用

函式返回當前時間。

用法

gettimeofday(return_float);
return_float    可選。當設定為 TRUE 時,返回一個浮點數,而不是一個陣列。預設是 FALSE。

返回值:    預設返回一個關聯陣列,帶有如下陣列鍵名:
[sec] - Unix 紀元以來的秒
[usec] - 微秒
[minuteswest] - 格林尼治以西的分
[dsttime] - 夏令時修正型別
如果 return_float 引數設定為 true,則返回一個浮點數。

測試案例

// Print the array from gettimeofday()
print_r(gettimeofday());

// Print the float from gettimeofday()
echo gettimeofday(true);

結果

Array
(
    [sec] => 1593766542
    [usec] => 208317
    [minuteswest] => 0
    [dsttime] => 0
)
1593766542.2645

gmdate()

作用

 函式格式化 GMT/UTC 日期和時間,並返回格式化的日期字串

用法

gmdate(format,timestamp);

測試案例

// Prints the day
echo gmdate("l") . "<br>";

// Prints the day, date, month, year, time, AM or PM
echo gmdate("l jS of F Y h:i:s A");

結果

Friday
Friday 3rd 2020f July 2020 08:59:03 AM

gmmktime()

作用

 函式返回 GMT 日期的 UNIX 時間戳。

用法

gmmktime(hour,minute,second,month,day,year,is_dst);

測試案例

// Prints: October 3, 1975 was on a Friday
echo "Oct 3, 1975 was on a ".date("l", gmmktime(0,0,0,10,3,1975));

結果

Oct 3, 1975 was on a Friday

gmstrftime()

作用

函式根據區域設定格式化 GMT/UTC 日期和時間。

用法

gmstrftime(format,timestamp);

測試案例

echo(gmstrftime("%B %d %Y, %X %Z",mktime(20,0,0,12,31,98))."<br>");

setlocale(LC_ALL,"hu_HU.UTF8");
echo(gmstrftime("%Y. %B %d. %A. %X %Z"));

結果

January 01 1999, 01:00:00 Eastern Standard Time
2013. September 21. Saturday. 15:10:22 Eastern Standard Time

idate()

作用

函式格式化本地時間/日期為整數。

用法

idate(format,timestamp);
format  B - Swatch Beat/Internet Time
        d - 一個月中的第幾天
        h - 小時(12 小時制)
        H - 小時(24 小時制)
        i -I - 如果啟用夏令時則返回 1,否則返回 0
        L - 如果閏年則返回 1,否則返回 0
        m - 月份的數字
        s - 秒
        t - 本月的總天數
        U - 自 Unix 紀元(January 1 1970 00:00:00 GMT)以來經過的秒數,與 time() 作用相同
        w - 星期中的第幾天(星期天是 0W - ISO-8601 格式年份中的第幾個星期,每星期從星期一開始
        y - 年份(12 位數字)
        Y - 年份(4 位數字)
        z - 一年中的第幾天
        Z - 以秒為單位的時區偏移量

測試案例

echo idate("B") . "<br>";
echo idate("d") . "<br>";
echo idate("h") . "<br>";
echo idate("H") . "<br>";
echo idate("i") . "<br>";
echo idate("I") . "<br>";
echo idate("L") . "<br>";
echo idate("m") . "<br>";
echo idate("s") . "<br>";
echo idate("t") . "<br>";
echo idate("U") . "<br>";
echo idate("w") . "<br>";
echo idate("W") . "<br>";
echo idate("y") . "<br>";
echo idate("Y") . "<br>";
echo idate("z") . "<br>";
echo idate("Z") . "<br>";

結果

55
4
12
0
19
0
1
7
30
31
1593821970
6
27
20
2020
185
0

localtime()

作用

函式返回本地時間。

用法

localtime(timestamp,is_assoc);

is_assoc    可選。規定返回關聯陣列還是數值陣列。如果為 FALSE,則返回數值陣列。如果為 TRUE,則返回關聯陣列。預設為 FALSE。
關聯陣列的鍵名如下所示:

    [tm_sec] - 秒數
    [tm_min] - 分鐘數
    [tm_hour] - 小時
    [tm_mday] - 月份中的第幾天
    [tm_mon] - 年份中的第幾個月,從 0 開始表示一月份
    [tm_year] - 年份,從 1900 開始
    [tm_wday] - 星期中的第幾天 (Sunday=0)
    [tm_yday] - 年中的第幾天
    [tm_isdst] - 夏令時當前是否生效

測試案例

print_r(localtime());
echo "<br><br>";
print_r(localtime(time(),true));

結果

Array
(
    [0] => 37
    [1] => 21
    [2] => 0
    [3] => 4
    [4] => 6
    [5] => 120
    [6] => 6
    [7] => 185
    [8] => 0
)
Array
(
    [tm_sec] => 37
    [tm_min] => 21
    [tm_hour] => 0
    [tm_mday] => 4
    [tm_mon] => 6
    [tm_year] => 120
    [tm_wday] => 6
    [tm_yday] => 185
    [tm_isdst] => 0
)

microtime()

作用

函式返回當前 Unix 時間戳的微秒數

用法

microtime(get_as_float);
get_as_float    可選。當設定為 TRUE 時,規定函式應該返回一個浮點數,否則返回一個字串。預設為 FALSE

測試案例

echo(microtime());

結果

0.48485500 1593822517

mktime()

作用

 函式返回一個日期的 UNIX 時間戳

用法

mktime(hour,minute,second,month,day,year,is_dst);

測試案例

// Prints: October 3, 1975 was on a Friday
echo "Oct 3, 1975 was on a ".date("l", mktime(0,0,0,10,3,1975));

結果

Oct 3, 1975 was on a Friday

strftime()

作用

函式根據區域設定格式化本地日期和時間

用法

strftime(format,timestamp);

測試案例

echo(strftime("%B %d %Y, %X %Z",mktime(20,0,0,12,31,98))."<br>");

setlocale(LC_ALL,"hu_HU.UTF8");
echo(strftime("%Y. %B %d. %A. %X %Z"));

結果

December 31 1998, 20:00:00 CST
2020. July 05. Sunday. 09:56:29 CST

strptime()

作用

函式解析由 strftime() 生成的時間/日期。
注意:該函式不能在 Windows 平臺下實現!

用法

strptime(date,format);

測試案例

$format="%d/%m/%Y %H:%M:%S";
$strf=strftime($format);
echo("$strf");
print_r(strptime($strf,$format));

結果

05/07/2020 02:00:47
Array
(
    [tm_sec] => 47
    [tm_min] => 0
    [tm_hour] => 2
    [tm_mday] => 5
    [tm_mon] => 6
    [tm_year] => 120
    [tm_wday] => 0
    [tm_yday] => 186
    [unparsed] => 
)

time()

作用

函式返回自 Unix 紀元(January 1 1970 00:00:00 GMT)起的當前時間的秒數。

用法

time();

測試案例

$t=time();
echo($t . "<br>");
echo(date("Y-m-d",$t));

結果

1593914254
2020-07-05

timezone_abbreviations_list()

作用

返回包含夏令時、偏移量和時區名稱的關聯陣列

用法

time();

測試案例

$tzlist=timezone_abbreviations_list();
print_r($tzlist["act"]);

結果

Array
(
    [0] => Array
        (
            [dst] => 
            [offset] => -18000
            [timezone_id] => America/Porto_Acre
        )

    [1] => Array
        (
            [dst] => 
            [offset] => -18000
            [timezone_id] => America/Eirunepe
        )

    [2] => Array
        (
            [dst] => 
            [offset] => -18000
            [timezone_id] => America/Rio_Branco
        )

    [3] => Array
        (
            [dst] => 
            [offset] => -18000
            [timezone_id] => Brazil/Acre
        )

)
參考

《PHP 5 Date/Time 函式 | 菜鳥教程》

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章