ホームページ  >  記事  >  バックエンド開発  >  PHPでの一連の日付と時刻の操作

PHPでの一連の日付と時刻の操作

步履不停
步履不停オリジナル
2019-06-06 11:47:584294ブラウズ

PHPでの一連の日付と時刻の操作

下载 (1).jpg

#日付と時刻の書式設定

date : 日付の書式設定と時刻

  • シナリオ

現在の日付と時刻または特定の日付と時刻をフォーマットする

##出力は特定の形式の文字列であり、情報の人間化された表示によく使用されます。 ##特定のタイムスタンプをフォーマットした後に生成される日付と時刻の文字列に戻ります。タイムスタンプが指定されていない場合は、デフォルトで現地の現在時間が使用されます。

  • 形式

    説明
戻り値の例

  • Y

#4 数字を含む完全な年##y219月の 3 文字の省略形 #01 ~ 12テキストは、曜日を示します。#Mon to Sun 桁 時間形式 (先頭にゼロを付ける) ##00 ~ 23 時間、01 ~ 12夏時間かどうか、それ以外の場合は 0##i2th は、j00 ~ 59
#2019
数字で表される年 ##M
1 月から 12 月まで # #m 先頭にゼロを付けた数字で表される月
# D 3 文字
d 日付、先頭にゼロが付いた 2
01 から 31 H hour,24
#h 12 時間形式、先行ゼロ付き
I 夏時間の場合は 1
先頭にゼロが付いた分番号 00 ~ 59
S 月の日数の後の英語の接尾辞。 文字 #st,nd,rd または
## と一緒に使用できます。 #s 秒数 (先頭にゼロあり)
##
  • 一般的な形式

// 形如 2019-05-31 12:00:00echo date("Y-m-d H:i:s");
// 形如 2019/05/31 12:00:00echo date("Y/m/d H:i:s");
// 形如 2019年05月31日 12时00分00秒echo date("Y年m月d日 H时i分s秒");
<?php
// 设置当前时区为上海时区
date_default_timezone_set("Asia/Shanghai");

// 获取当前时区 : Asia/Shanghai
echo "当前时区 : ".date_default_timezone_get()."<br/>";

// `Y年m月d日 H时i分s秒` 格式化当前时间 : 2019年05月30日 22时32分46秒
echo "当前时间 : ".date("Y年m月d日 H时i分s秒")."<br/>";

// `Y-m-d H:i:s` 格式化当前时间 : 2019-05-30 22:32:46
echo "当前时间 : ".date("Y-m-d H:i:s")."<br/>";

// `w` 星期中的第几天,数字表示: 0(表示星期天)到 6(表示星期六)
switch (date("w")) {    
    case &#39;0&#39;:
        $dayStr = "日";        
        break;    
    case &#39;1&#39;:
    $dayStr = "一";        
    break;    
  case &#39;2&#39;:
    $dayStr = "二";        
    break;    
  case &#39;3&#39;:
    $dayStr = "三";      
    break;   
  case &#39;4&#39;:
    $dayStr = "四";        
    break;    
  case &#39;5&#39;:
    $dayStr = "五";        
    break;    
  case &#39;6&#39;:
    $dayStr = "六";        
    break;    
  default:
    $dayStr = "未知";        
    break;
} 
// 2019年05月30日 星期四
echo "当前时间 : ".date("Y年m月d日")." 星期".$dayStr."<br/>";
echo "<hr/>";

// `z` 年份中的第几天 : 今天是全年的第149天
echo "今天是全年的第".date("z")."天<br/>";

// `W` ISO-8601 格式年份中的第几周,每周从星期一开始 : 本周是全年的第22周
echo "本周是全年的第".date("W")."周<br/>";

// `t` 指定的月份有几天 : 本月共有31天
echo "本月共有".date("t")."天<br/>";
?>

日付変換タイムスタンプ

time: 現在の Unix タイムスタンプを返します

  • ##シナリオ

現在の日時または特定の日時のタイムスタンプを取得します。これは、日付と時刻の間の変換によく使用されます。

  • 説明

Unix エポック (1970 年 1 月 1 日 00:00:00 GMT) 以降の現在時刻を返します。 #秒数.

  • <?php
    // 设置当前时区为上海时区
    date_default_timezone_set("Asia/Shanghai");
    
    // 获取当前时区
    echo "当前时区 : ".date_default_timezone_get()."<br/>";
    
    // 一周前的日期时间: 7 days; 24 hours; 60 mins; 60 
    secs$preWeek = time() - (7 * 24 * 60 * 60);
    echo "现在是".date("Y-m-d H:i:s").",上周是".date("Y-m-d H:i:s",$preWeek)."<br/>";
    
    // 一周后的日期时间: 7 days; 24 hours; 60 mins; 60 secs
    $nextWeek = time() + (7 * 24 * 60 * 60);
    echo "现在是".date("Y-m-d H:i:s").",下周是".date("Y-m-d H:i:s",$nextWeek)."<br/>";
    ?>
microtime : 現在の Unix タイムスタンプを返します。およびマイクロ秒

  • シナリオ

現在の日時または特定の日付の時刻を取得します。タイム スタンプ。プログラム実行プロセスの分析によく使用され、日付と時刻の間の変換にも使用できます。

##現在の Unix タイムスタンプとマイクロ秒。この関数は、`gettimeofday()` システム コールをサポートするオペレーティング システムでのみ使用できます。

  • Example

<?php

// 设置当前时区为上海时区
date_default_timezone_set("Asia/Shanghai");

// 获取当前时区
cho "当前时区 : ".date_default_timezone_get()."<br/>";

// 当前日期时间戳
echo "当前日期时间戳: ".time()." <--> ".microtime()." <--> ".microtime(TRUE)."<br/>";

?>

    mktime: 日付の Unix タイムスタンプを取得します

  • ##シナリオ

指定された日付のタイムスタンプを取得し、「時、分、秒、月、日、年」の形式に従って順番に解析し、タイムスタンプを返します。

  • 説明

指定されたパラメータに従って Unix タイムスタンプを返します。

  • 備考

    形式
  • 説明パラメータの例

時間数 00 ~ 23##i分00 ~ 59 秒数 jday#01 ~ 31##Y 年番号は 2 桁または 4 桁です に対応します は 1970-2000 に対応します

格式: 时分秒 月日年,支持从右往左依次省略,被省略的值取当前时间的对应值.

  • 示例

<?php
// 设置当前时区为上海时区
date_default_timezone_set("Asia/Shanghai");

// 获取当前时区
echo "当前时区 : ".date_default_timezone_get()."<br/>"; 

// 指定日期时间戳: 时分秒 月日年 : 1559275200 <--> 2019-05-31 12:00:00
echo "2019年05月31日 12:00:00 的时间戳: ".mktime(12,0,0,5,31,2019)." <--> ".date("Y-m-d H:i:s", mktime(12,0,0,5,31,2019))."<br/>"; 

// 距离国庆节还有多少天,单位秒 : 今天是2019-05-31,距离国庆节还剩122天
$nationalDay = mktime(0,0,0,10,1,2019);
$currentDay = time();
$remainingDay = floor(abs($nationalDay - $currentDay)/(24*3600));
echo "今天是".date("Y-m-d").",距离国庆节还剩".$remainingDay."天<br/>";
?>

strtotime : 将任何字符串的日期时间描述解析为 Unix 时间戳

  • 场景

将英文日期解析成时间戳,比直接解析日期方便,采用自然语义而不是编程语言进行转换日期.

  • 说明

本函数预期接受一个包含美国英语日期格式的字符串并尝试将其解析为 Unix 时间戳(自 January 1 1970 00:00:00 GMT 起的秒数,其值相对于 now 参数给出的时间,如果没有提供此参数则用系统当前时间.

  • 常用格式

// 2019-06-02
echo date("Y-m-d", strtotime("2019-05-31 +2 days"));

// 2019-07-01
echo date("Y-m-d", strtotime("2019-05-31 +1 month"));

// 2019-06-09
echo date("Y-m-d", strtotime("2019-05-31 +1 week 2 days 4 hours 2 seconds"));
  • 示例

<?php
// 设置当前时区为上海时区
date_default_timezone_set("Asia/Shanghai");

// 获取当前时区
echo "当前时区 : ".date_default_timezone_get()."<br/>";

// 当前日期时间戳
echo "当前日期时间戳: ".time()." <--> ".strtotime("now")." <--> ".date("Y-m-d H:i:s", strtotime("now"))."<br/>";

// 一周后的日期时间: 7 days; 24 hours; 60 mins; 60 secs
$nextWeek = time() + (7 * 24 * 60 * 60);
echo "现在是".date("Y-m-d H:i:s").",下周是".date("Y-m-d H:i:s",$nextWeek)." <--> ".date("Y-m-d H:i:s",strtotime("+1 week"))."<br/>";

echo "现在是".date("Y-m-d H:i:s").",1周2天4小时2秒是".date("Y-m-d H:i:s",strtotime("+1 week 2 days 4 hours 2 seconds"))."<br/>";

echo "现在是".date("Y-m-d H:i:s").",下周三是".date("Y-m-d H:i:s",strtotime("next Thursday"))."<br/>";
?>


日期时间函总结

日期时间函数库是 php 内置的函数库,默认情况下已启用,值得注意的是,日期时间和时区有关,建议首先设置下时区.

纵观日期时间的操作方法,总的来说,可以大致分为两类,一类是给计算机用的,另一类是给人看的.

  • 给人看的

date_default_timezone_set("Asia/Shanghai") : 设置当前脚本使用的时区date("Y-m-d H:i:s") : 格式化日期时间date("Y-m-d", strtotime("2019-05-31 +2 days")) : 格式化英文描述的日期时间

  • 给计算机用的

time() : 当前时间的秒数microtime() : 当前时间的秒数和微秒数strtotime() : 将字符串形式的日期时间转换成时间戳

最后,文档那么齐全,不懂就去多看看,忘记有啥方法全靠 ide 智能提示就好,多用用就会慢慢熟练。

推荐教程:PHP制作阴阳历转换的日历插件

H hour
s #00 ~ 59
n month 月数 01 ~ 12
日数
year 0-692000-206970-100

以上がPHPでの一連の日付と時刻の操作の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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