Rumah > pembangunan bahagian belakang > masalah PHP > Adakah terdapat cara untuk memanipulasi masa dalam php?

Adakah terdapat cara untuk memanipulasi masa dalam php?

青灯夜游
Lepaskan: 2023-03-15 18:48:02
asal
2327 orang telah melayarinya

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.

Adakah terdapat cara untuk memanipulasi masa dalam php?

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 ]]]]]]] )
Salin selepas log masuk

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秒
?>
Salin selepas log masuk

Hasil cetakan untuk melaksanakan program di atas ialah:

1467909956   1467852303
Salin selepas log masuk
  • 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 ]]]]]]] )
Salin selepas log masuk

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秒
?>
Salin selepas log masuk

Hasil cetakan untuk melaksanakan program di atas ialah:

1467910465 1467852303
Salin selepas log masuk
  • microtime()

microtime() boleh mendapatkan cap masa dan mikrosaat UNIX semasa. Sintaksnya adalah seperti berikut:

mixed microtime ([ bool $get_as_float ] )
Salin selepas log masuk

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);  //返回一个浮点型字符串表示时间
?>
Salin selepas log masuk

Hasil cetakan melaksanakan program di atas adalah seperti berikut:

0.40474900 1467910862
1467910862.4048
Salin selepas log masuk
  • masa( )

fungsi time() mengembalikan cap masa UNIX semasa. Sintaksnya adalah seperti berikut:

int time ( void )
Salin selepas log masuk

Sintaks fungsi time() adalah agak mudah Contoh penggunaannya adalah seperti berikut:

<?php
echo time();
?>
Salin selepas log masuk

Hasil cetakan bagi. melaksanakan program di atas ialah:

1467911104
Salin selepas log masuk
  • getdate()

getdate() boleh mendapatkan maklumat tarikh dan masa. Sintaks adalah seperti berikut:

array getdate ([ int $timestamp = time() ] )
Salin selepas log masuk

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.

getdate() 函数返回关联数组键名
键名说明返回值例子
seconds秒的数字表示0 到 59
minutes分钟的数字表示0 到 59
hours小时的数字表示0 到 23
mday月份中第几天的数字表示1 到 31
wday星期中第几天的数字表示0(周日)到6(周六)
mon月份的数字表示1 到 12
year4 位数字表示的完整年份比如:1999 或 2019
yday一年中第几天的数字表示0 到 365
weekday星期几的完整文本表示Monday 到 Sunday
month月份的完整文本表示,,比如 January 或 AprilJanuary 到 December
0自从 UNIX 纪元开始至今的秒数,和 time() 的返回值以及用于 date() 的值类似系统相关,典型值为 -2147483648 ~ 2147483647

getdate() 函数的使用示例如下:

<?php
echo "<pre class="brush:php;toolbar:false">";
var_dump(getdate());
?>
Salin selepas log masuk

执行以上程序的打印结果如下:

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)
}
Salin selepas log masuk

2、strtotime()与mktime():日期转时间戳

  • strtotime() 函数

使用 strtotime() 函数可以将任何字符串类型的日期/时间转换为 UNIX 时间戳,其语法格式如下:

strtotime($time [,$now = time()])
Salin selepas log masuk

其中 $time 为表示时间/日期的字符串,例如“2020-01-01”;$now 为可选参数,用来计算返回值的时间戳。函数执行成功会返回指定的字符串,执行失败返回 FALSE。

另外需要注意的是,如果使用两位数字表示年份的话,其中 0 ~ 69 表示 2000 ~ 2069,70 ~ 100 则表示 1970 ~ 2000。

【示例】使用 strtotime() 函数获取指定时间的时间戳。

<?php
    echo &#39;当前的时间戳是:&#39;.time().&#39;<br>&#39;;
    echo &#39;使用“now”获取当前的时间戳:&#39;.strtotime(&#39;now&#39;).&#39;<br>&#39;;
    echo &#39;2000-09-10 的时间戳是:&#39;.strtotime("10 September 2000").&#39;<br>&#39;;
    echo &#39;在当前的时间戳上加一天:&#39;.strtotime("+1 day").&#39;<br>&#39;;
    echo &#39;在当前的时间戳上加一周:&#39;.strtotime("+1 week").&#39;<br>&#39;;
    echo &#39;在当前的时间戳上加一周两天四小时两分钟:&#39;.strtotime("+1 week 2 days 4 hours 2 seconds").&#39;<br>&#39;;
    echo &#39;下一个周四的时间戳:&#39;.strtotime("next Thursday").&#39;<br>&#39;;
    echo &#39;上一个周一的时间戳:&#39;.strtotime("last Monday").&#39;<br>&#39;;
?>
Salin selepas log masuk

运行结果如下:

当前的时间戳是:1585273874
使用“now”获取当前的时间戳:1585273874
2000-09-10 的时间戳是:968515200
在当前的时间戳上加一天:1585360274
在当前的时间戳上加一周:1585878674
在当前的时间戳上加一周两天四小时两分钟:1586065876
下一个周四的时间戳:1585756800
上一个周一的时间戳:1584892800
Salin selepas log masuk

注意:根据具体时间的变化,程序每次运行的结果略有不同。

  • 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 ]]]]]]])
Salin selepas log masuk

参数说明如下:

  • $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 &#39;当前的时间戳是:&#39;.$time1.&#39;<br>&#39;;
    $time2 = mktime(0, 0, 0, 3, 26, 20);
    echo &#39;2020-03-26 00:00:00 的时间戳是:&#39;.$time2.&#39;<br>&#39;;
    $time3 = mktime();
    echo &#39;省略函数的所有参数,获得的时间戳是:&#39;.$time3.&#39;<br>&#39;;
    $time4 = mktime(-1, -20, 6, 3, 26, 2020);
    echo &#39;2020-03-25 22:40:06 的时间戳是:&#39;.$time4.&#39;<br>&#39;;
?>
Salin selepas log masuk

运行结果如下:

当前的时间戳是:1585216256
2020-03-26 00:00:00 的时间戳是:1585152000
省略函数的所有参数,获得的时间戳是:1585216256
2020-03-25 22:40:06 的时间戳是:1585147206
Salin selepas log masuk

推荐学习:《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!

Label berkaitan:
php
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan