php mempunyai cara untuk memanipulasi masa. PHP menyediakan pelbagai kaedah pemprosesan tarikh dan masa: 1. tarikh(), memformat tarikh dan masa tempatan (), mengembalikan cap masa tarikh 3. idate(), memformatkan waktu tempatan sebagai integer; ; 4. , strtotime(), tukar rentetan masa kepada cap masa, dsb.
Persekitaran pengendalian tutorial ini: sistem Windows 7, PHP versi 7.1, komputer DELL G3
php mempunyai kaedah untuk masa operasi.
Penggunaan dan pemprosesan tarikh dan masa adalah penting dalam pembangunan web, seperti masa penyerahan borang, masa log masuk pengguna, masa mengemas kini dan memadam data dalam pangkalan data, dsb. Jika anda ingin merakam detik apabila operasi ini dijalankan, anda perlu melengkapkannya mengikut tarikh dan masa.
PHP membekalkan kita dengan pelbagai fungsi pemprosesan tarikh dan masa:
函数 | 描述 |
---|---|
checkdate() | 验证格利高里日期。 |
date_add() | 添加日、月、年、时、分和秒到一个日期。 |
date_create_from_format() | 返回一个根据指定格式进行格式化的新的 DateTime 对象。 |
date_create() | 返回一个新的 DateTime 对象。 |
date_date_set() | 设置一个新的日期。 |
date_default_timezone_get() | 返回默认时区,被所有的 Date/Time 函数使用。 |
date_default_timezone_set() | 设置默认时区,被所有的 Date/Time 函数使用。 |
date_diff() | 返回两个日期间的差值。 |
date_format() | 返回根据指定格式进行格式化的日期。 |
date_get_last_errors() | 返回日期字符串中的警告/错误。 |
date_interval_create_from_date_string() | 从字符串的相关部分建立一个 DateInterval。 |
date_interval_format() | 格式化时间间隔。 |
date_isodate_set() | 设置 ISO 日期。 |
date_modify() | 修改时间戳。 |
date_offset_get() | 返回时区偏移。 |
date_parse_from_format() | 根据指定的格式返回一个带有指定日期的详细信息的关联数组。 |
date_parse() | 返回一个带有指定日期的详细信息的关联数组。 |
date_sub() | 从指定日期减去日、月、年、时、分和秒。 |
date_sun_info() | 返回一个包含有关指定日期与地点的日出/日落和黄昏开始/黄昏结束的信息的数组。 |
date_sunrise() | 返回指定日期与地点的日出时间。 |
date_sunset() | 返回指定日期与地点的日落时间。 |
date_time_set() | 设置时间。 |
date_timestamp_get() | 返回 Unix 时间戳。 |
date_timestamp_set() | 设置基于 Unix 时间戳的日期和时间。 |
date_timezone_get() | 返回给定 DateTime 对象的时区。 |
date_timezone_set() | 设置 DateTime 对象的时区。 |
date() | 格式化本地日期和时间。 |
getdate() | 返回某个时间戳或者当前本地的日期/时间的日期/时间信息。 |
gettimeofday() | 返回当前时间。 |
gmdate() | 格式化 GMT/UTC 日期和时间。 |
gmmktime() | 返回 GMT 日期的 UNIX 时间戳。 |
gmstrftime() | 根据区域设置格式化 GMT/UTC 日期和时间。 |
idate() | 格式化本地时间/日期为整数。 |
localtime() | 返回本地时间。 |
microtime() | 返回当前 Unix 时间戳的微秒数。 |
mktime() | 返回一个日期的 Unix 时间戳。 |
strftime() | 根据区域设置格式化本地时间/日期。 |
strptime() | 解析由 strftime() 生成的时间/日期。 |
strtotime() | 将任何英文文本的日期或时间描述解析为 Unix 时间戳。 |
time() | 返回当前时间的 Unix 时间戳。 |
timezone_abbreviations_list() | 返回包含夏令时、偏移量和时区名称的关联数组。 |
timezone_identifiers_list() | 返回带有所有时区标识符的数值数组。 |
timezone_location_get() | 返回指定时区的位置信息。 |
timezone_name_from_ abbr() | 根据时区缩略语返回时区名称。 |
timezone_name_get() | 返回时区的名称。 |
timezone_offset_get() | 返回相对于 GMT 的时区偏移。 |
timezone_open() | 创建一个新的 DateTimeZone 对象。 |
timezone_transitions_get() | 返回时区的所有转换。 |
timezone_version_get() | 返回时区数据库的版本。 |
Berikut ialah pengenalan ringkas kepada beberapa kaedah pemprosesan masa dan tarikh:
1 PHP mendapat masa semasa (5 cara)
Dalam tarikh dan masa fungsi, adalah sangat penting untuk mendapatkan cap masa UNIX. Cap masa ialah jujukan aksara, bermula dari 00:00:00 pada 1 Januari 1970 GMT (08:00:00 pada 1 Januari 1970, waktu Beijing. ) kepada Jumlah bilangan milisaat semasa. Berikut adalah beberapa fungsi untuk mendapatkan masa semasa.
gmmktime()
gmmktime() fungsi boleh mendapatkan cap waktu UNIX tarikh GMT. Sintaks adalah seperti berikut:
int gmmktime ([ int $hour [, int $minute [, int $second [, int $month [, int $day [, int $year [, int $is_dst ]]]]]]] )
Parameter fungsi ini boleh kosong dari kanan ke kiri dan parameter kosong akan ditetapkan kepada nilai GMT semasa yang sepadan.
Contoh penggunaan adalah seperti berikut:
<?php echo gmmktime(); //没有设置参数, 则默认取得当前GMT时间 echo gmmktime(0,45,3,7,7,2016); //设置参数表示GMT时间2016年7月7日0点45分3秒 ?>
Hasil cetakan untuk melaksanakan program di atas ialah:
1467909956 1467852303
mktime()
mktime() juga boleh mendapatkan cap masa UNIX tarikh. Sintaks adalah seperti berikut:
int mktime ([ int $hour = date("H") [, int $minute = date("i") [, int $second = date("s") [, int $month = date("n") [, int $day = date("j") [, int $year = date("Y") [, int $is_dst = -1 ]]]]]]] )
Fungsi ini mengembalikan cap waktu UNIX berdasarkan argumen yang diberikan. Cap masa ialah integer panjang yang mengandungi bilangan saat dari zaman UNIX ke masa tertentu.
Seperti fungsi gmmktime(), parameter fungsi ini juga boleh diabaikan dari kanan ke kiri Sebarang parameter yang ditinggalkan akan ditetapkan kepada nilai semasa tarikh dan masa setempat.
Contoh penggunaan adalah seperti berikut:
<?php echo mktime(); // 没有设置参数则默认取得当前GMT时间 echo mktime(0,45,3,7,7,2016); //设置参数表示GMT时间2016年7月7日0点45分3秒 ?>
Hasil cetakan untuk melaksanakan program di atas ialah:
1467910465 1467852303
microtime()
microtime() boleh mendapatkan cap masa dan mikrosaat UNIX semasa. Sintaksnya adalah seperti berikut:
mixed microtime ([ bool $get_as_float ] )
Jika anda menetapkan nilai parameter get_as_float kepada benar, microtime() akan mengembalikan nombor titik terapung, jika tiada parameter, ia akan mengembalikan rentetan dalam "msec sec", dengan sec ialah diri- Bilangan saat sejak zaman UNIX, msec ialah bahagian mikrosaat. Kedua-dua bahagian rentetan dikembalikan dalam beberapa saat.
Contoh penggunaan adalah seperti berikut:
<?php echo microtime(); //返回 msec sec 格式字符串表示时间 echo "<br/>"; echo microtime(true); //返回一个浮点型字符串表示时间 ?>
Hasil cetakan melaksanakan program di atas adalah seperti berikut:
0.40474900 1467910862 1467910862.4048
masa( )
fungsi time() mengembalikan cap masa UNIX semasa. Sintaksnya adalah seperti berikut:
int time ( void )
Sintaks fungsi time() adalah agak mudah Contoh penggunaannya adalah seperti berikut:
<?php echo time(); ?>
Hasil cetakan bagi. melaksanakan program di atas ialah:
1467911104
getdate()
getdate() boleh mendapatkan maklumat tarikh dan masa. Sintaks adalah seperti berikut:
array getdate ([ int $timestamp = time() ] )
Fungsi ini mengembalikan tatasusunan bersekutu yang mengandungi maklumat tarikh berdasarkan cap waktu. Jika tiada cap masa diberikan, ia diandaikan sebagai waktu tempatan semasa (ini adalah nilai yang sama dengan fungsi time()).
Unit nama kunci dalam tatasusunan bersekutu yang dikembalikan adalah seperti yang ditunjukkan dalam jadual.
键名 | 说明 | 返回值例子 |
---|---|---|
seconds | 秒的数字表示 | 0 到 59 |
minutes | 分钟的数字表示 | 0 到 59 |
hours | 小时的数字表示 | 0 到 23 |
mday | 月份中第几天的数字表示 | 1 到 31 |
wday | 星期中第几天的数字表示 | 0(周日)到6(周六) |
mon | 月份的数字表示 | 1 到 12 |
year | 4 位数字表示的完整年份 | 比如:1999 或 2019 |
yday | 一年中第几天的数字表示 | 0 到 365 |
weekday | 星期几的完整文本表示 | Monday 到 Sunday |
month | 月份的完整文本表示,,比如 January 或 April | January 到 December |
0 | 自从 UNIX 纪元开始至今的秒数,和 time() 的返回值以及用于 date() 的值类似 | 系统相关,典型值为 -2147483648 ~ 2147483647 |
getdate() 函数的使用示例如下:
<?php echo "<pre class="brush:php;toolbar:false">"; var_dump(getdate()); ?>
执行以上程序的打印结果如下:
array(11) { ["seconds"]=>int(57) ["minutes"]=>int(18) ["hours"]=>int(17) ["mday"]=>int(7) ["wday"]=>int(4) ["mon"]=>int(7) ["year"]=>int(2016) ["yday"]=>int(188) ["weekday"]=>string(8) "Thursday" ["month"]=>string(4) "July" [0]=>int(1467911937) }
2、strtotime()与mktime():日期转时间戳
strtotime() 函数
使用 strtotime() 函数可以将任何字符串类型的日期/时间转换为 UNIX 时间戳,其语法格式如下:
strtotime($time [,$now = time()])
其中 $time 为表示时间/日期的字符串,例如“2020-01-01”;$now 为可选参数,用来计算返回值的时间戳。函数执行成功会返回指定的字符串,执行失败返回 FALSE。
另外需要注意的是,如果使用两位数字表示年份的话,其中 0 ~ 69 表示 2000 ~ 2069,70 ~ 100 则表示 1970 ~ 2000。
【示例】使用 strtotime() 函数获取指定时间的时间戳。
<?php echo '当前的时间戳是:'.time().'<br>'; echo '使用“now”获取当前的时间戳:'.strtotime('now').'<br>'; echo '2000-09-10 的时间戳是:'.strtotime("10 September 2000").'<br>'; echo '在当前的时间戳上加一天:'.strtotime("+1 day").'<br>'; echo '在当前的时间戳上加一周:'.strtotime("+1 week").'<br>'; echo '在当前的时间戳上加一周两天四小时两分钟:'.strtotime("+1 week 2 days 4 hours 2 seconds").'<br>'; echo '下一个周四的时间戳:'.strtotime("next Thursday").'<br>'; echo '上一个周一的时间戳:'.strtotime("last Monday").'<br>'; ?>
运行结果如下:
当前的时间戳是:1585273874 使用“now”获取当前的时间戳:1585273874 2000-09-10 的时间戳是:968515200 在当前的时间戳上加一天:1585360274 在当前的时间戳上加一周:1585878674 在当前的时间戳上加一周两天四小时两分钟:1586065876 下一个周四的时间戳:1585756800 上一个周一的时间戳:1584892800
注意:根据具体时间的变化,程序每次运行的结果略有不同。
mktime() 函数
除了 strtotime() 函数外,我们还可以使用 PHP 中的 mktime() 函数来获取指定日期的 UNIX 时间戳,该函数的语法格式如下:
mktime ([$hour = date("H") [, $minute = date("i") [, $second = date("s") [, $month = date("n") [, $day = date("j") [, $year = date("Y") [, $is_dst = -1 ]]]]]]])
参数说明如下:
$hour:表示一天中经过的小时数。如果 $hour 为负值,则表示前一天的适当时间;如果 $hour 大于 23,则表示第二天的适当时间。
$minute:表示一个小时内经过的分钟数。如果 $minute 为负值,则表示前一小时适当的分钟数;如果 $minute 大于 59,则表示下一小时中的适当分钟数。
$second:表示一分钟内经过的秒数。如果 $second 为负值,则表示前一分钟内的适当秒数;如果 $second 大于59,则表示下一分钟内的适当秒数。
$month:表示一年中经过的月份数,取值范围在 1 到 12 之间。如果 $month 小于 1(包括负值),则表示上一年的适当月份;如果 $month 大于 12,则表示下一年的适当月份。
$day:表示一个月中经过的天数,取值范围在 1 到 31 之间(取决于具体月份的天数)。如果 $day 小于 1(包括负值),则表示上个月的适当天数,比如 0 表示上个月的最后一天,-1 表示上个月的倒数第二天等等;如果 $day 大于本月的最大天数,则表示下个月的适当日期。
$year:表示具体的年份,可以是两位或四位数字,0 ~ 69 对应 2000 ~ 2069 年,70 ~ 100 对应 1970 ~ 2000年。在如今系统中普遍把 time_t 作为一个 32 位有符号整数的情况下,$year 的合法范围是 1901 到 2038 之间,不过此限制自 PHP5.1.0 起已被克服了。
$is_dst:本参数可以设为 1,表示正处于夏时制时间(DST),0 表示不是夏时制,或者 -1(默认值)表示不知道是否是夏时制。不过本参数在 PHP5.1.0 中已被废弃,并在 PHP7.0.0 中移除。
提示:mktime() 函数中的参数可以从右向左省略,任何省略的参数会被设置成本地日期和时间的当前值。如果省略函数的所有参数,那么 mktime() 函数会和 time() 函数一样,返回当前的时间戳。
【示例】使用 mktime() 函数获取指定时间的时间戳。
<?php $time1 = time(); echo '当前的时间戳是:'.$time1.'<br>'; $time2 = mktime(0, 0, 0, 3, 26, 20); echo '2020-03-26 00:00:00 的时间戳是:'.$time2.'<br>'; $time3 = mktime(); echo '省略函数的所有参数,获得的时间戳是:'.$time3.'<br>'; $time4 = mktime(-1, -20, 6, 3, 26, 2020); echo '2020-03-25 22:40:06 的时间戳是:'.$time4.'<br>'; ?>
运行结果如下:
当前的时间戳是:1585216256 2020-03-26 00:00:00 的时间戳是:1585152000 省略函数的所有参数,获得的时间戳是:1585216256 2020-03-25 22:40:06 的时间戳是:1585147206
推荐学习:《PHP视频教程》
Atas ialah kandungan terperinci Adakah terdapat cara untuk memanipulasi masa dalam php?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!