PHP 第五周函数学习记录
checkdate()
作用
函数用于验证格利高里日期。
用法
checkdate(month,day,year);
month 必需。一个从 1 到 12 的数字,规定月。
day 必需。一个从 1 到 31 的数字,规定日。
year 必需。一个从 1 到 32767 的数字,规定年。
测试案例
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 必需。规定要使用的格式。
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.78243132)
SUNFUNCS_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_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()
作用
函数格式化本地日期和时间,并返回格式化的日期字符串。
用法
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
2020 年 07 月 03 日 16 点 53 分 03 秒
2018-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 - 星期中的第几天(星期天是 0)
W - ISO-8601 格式年份中的第几个星期,每星期从星期一开始
y - 年份(1 或 2 位数字)
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
)
)
参考
本作品采用《CC 协议》,转载必须注明作者和本文链接