ホームページ >バックエンド開発 >PHPの問題 >PHPで時間を操作する方法はありますか?

PHPで時間を操作する方法はありますか?

青灯夜游
青灯夜游オリジナル
2022-04-20 16:24:142377ブラウズ

php には時間を操作する方法があります。 PHP は、豊富な日付と時刻の処理メソッドを提供します: 1. date()、ローカルの日付と時刻をフォーマットします; 2. mktime()、日付のタイムスタンプを返します; 3. idate()、ローカル時間を整数としてフォーマットします; 4. 、strtotime()、時刻文字列をタイムスタンプに変換するなど。

PHPで時間を操作する方法はありますか?

#このチュートリアルの動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューター

php には次のメソッドがあります。稼働時間。

フォームの送信時刻、ユーザーのログイン時刻、データベース内のデータの更新と削除の時刻など、Web 開発では日付と時刻の使用と処理が不可欠です。これらの操作が実行された瞬間を記録したい場合は、日付と時刻まで記録する必要があります。

PHP は、豊富な日付と時刻の処理関数を提供します:

関数 説明
checkdate() グレゴリオ暦の日付を検証します。
date_add() 日付に日、月、年、時、分、秒を追加します。
date_create_from_format() 指定された形式に従ってフォーマットされた新しい DateTime オブジェクトを返します。
date_create() 新しい DateTime オブジェクトを返します。
date_date_set() 新しい日付を設定します。
date_default_timezone_get() すべての日付/時刻関数で使用されるデフォルトのタイムゾーンを返します。
date_default_timezone_set() すべての日付/時刻関数で使用されるデフォルトのタイムゾーンを設定します。
date_diff() 2 つの日付の差を返します。
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() タイムゾーン データベースのバージョンを返します。

以下は、いくつかの時刻と日付の処理メソッドの簡単な紹介です:

1. PHP は現在時刻を取得します (5 つの方法)

In日付と時刻の関数では、UNIX タイムスタンプを取得することが非常に重要です。タイムスタンプは文字列であり、グリニッジ標準時 1970 年 1 月 1 日 00:00:00 (1970 年 1 月 1 日 08:00:00) からの時間を指します。 、北京時間)から現在の合計ミリ秒数。現在時刻を取得する関数をいくつか紹介します。

  • gmmktime()

gmmktime() 関数は、GMT 日付の UNIX タイムスタンプを取得します。構文は次のとおりです。

int gmmktime ([ int $hour [, int $minute [, int $second [, int $month [, int $day [, int $year [, int $is_dst ]]]]]]] )

この関数のパラメータは右から左に空のままにすることができ、空のパラメータは対応する現在の GMT 値に設定されます。

使用例は次のとおりです。

<?php
echo gmmktime();  //没有设置参数, 则默认取得当前GMT时间
echo gmmktime(0,45,3,7,7,2016);  //设置参数表示GMT时间2016年7月7日0点45分3秒
?>

上記のプログラムを実行した場合の出力結果は次のとおりです。

1467909956   1467852303
  • mktime()

mktime() は、日付の UNIX タイムスタンプを取得することもできます。構文は次のとおりです。

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 ]]]]]]] )

この関数は、指定されたパラメータに基づいて UNIX タイムスタンプを返します。タイムスタンプは、UNIX エポックから特定の時刻までの秒数を含む長整数です。

gmmktime() 関数と同様に、この関数のパラメータも右から左に省略できます。省略されたパラメータは、ローカルの日付と時刻の現在値に設定されます。

使用例は次のとおりです:

<?php
echo mktime();  // 没有设置参数则默认取得当前GMT时间
echo mktime(0,45,3,7,7,2016);  //设置参数表示GMT时间2016年7月7日0点45分3秒
?>

上記のプログラムを実行した結果の出力は次のとおりです:

1467910465 1467852303
  • #microtime()

microtime() は、現在の UNIX タイムスタンプとマイクロ秒を取得します。構文は次のとおりです:

mixed microtime ([ bool $get_as_float ] )

get_as_float パラメータ値を true に設定すると、microtime() は浮動小数点数を返します。パラメータがない場合は、「msec 秒」の文字列を返します。 format。sec は UNIX エポックです。今からの秒数です。msec はマイクロ秒の部分です。文字列の両方の部分が秒単位で返されます。

使用例は以下のとおりです。

<?php
echo microtime();  //返回 msec sec 格式字符串表示时间
echo "<br/>";
echo microtime(true);  //返回一个浮点型字符串表示时间
?>

上記プログラムを実行した場合の印刷結果は以下のとおりです。

0.40474900 1467910862
1467910862.4048

  • time()

time() 関数は、現在の UNIX タイムスタンプを返します。

int time ( void )

time() 関数の構文は比較的単純ですが、使用例は次のとおりです:


<?php
echo time();
?>

上記プログラムの実行結果の出力

1467911104

  • getdate()

getdate() は日付と時刻の情報を取得できます。構文は次のとおりです。

array getdate ([ int $timestamp = time() ] )

この関数は、タイムスタンプに基づいた日付情報を含む連想配列を返します。タイムスタンプが指定されていない場合は、現在の現地時間とみなされます (これは time() 関数と同じ値です)。

返される連想配列のキー名の単位は表のとおりです。

getdate() 関数は連想配列のキー名を返しますキー名説明戻り値例秒 秒数は、0 ~ 59分 分 数字は 0 ~ 59 時間 時間の数字は 0 ~ 23# を表します##mday wdaymonyearydayweekdaymonth0 です。

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 &#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;;
?>

运行结果如下:

当前的时间戳是: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 &#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;;
?>

运行结果如下:

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

推荐学习:《PHP视频教程

を表します。
月の日の数字は週を表します 1 ~ 31
真ん中の日の数字は、 0 (日曜日) ~ 6 (土曜日)
を表します。月の番号は 1 から 12
4 桁で表される完全な年を表します 例: 1999 または 2019
その年の日を表す数値 0 ~ 365
その日の完全なテキスト表現 月曜日から日曜日まで
月の完全なテキスト表現(1 月や 4 月など) 1 月から 12 月まで
UNIX エポックからの秒数 (time の戻り値と同様) () と date() に使用される値 システムに依存し、通常の値は -2147483648 ~ 2147483647

以上がPHPで時間を操作する方法はありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。