day08 时间、日期相关知识

本文详细介绍了PHP中用于处理时间和日期的各种函数,如time(),microtime(),date(),strtotime(),mktime(),DateTime对象的创建和操作,以及特殊变量和常量的使用,包括文件包含的区别。
摘要由CSDN通过智能技术生成

函数

time() 获取当前时间戳(10位,例如:)

microtime() 返回一个浮点数时间戳(秒数和微妙的总和)

date(格式,时间戳)日期格式化

<?php
    $time = time();
    echo date('Y-m-d H:i:s',$time);
?>

strtotime(string) 将字符串变成时间戳

strtotime("next Monday");

$baseTime = strtotime("2023-10-01");
echo strtotime("next Monday",$baseTime);

mktime($hour,$minute,$second,$month,$day,$year)生成时间戳(时分秒,月日年)

date_create() 来创建 一个日期时间对象 date_create("2023-10-01")

date_format() 来创建一个日期时间对象

  利用mktime创建一个时间为  2023-11-01 12:00:00
    $time = mktime(12,0,0,11,1,23);
    echo date('Y-m-d H:i:s',$time);
    
date_format($date,"Y-m-d H:i:s");
date_format($date,"Y年m月d日");

date_diff()计算两个日期之间的差

   $date1 = date_create("2023-11-01 12:00:00");
    $date2 = date_create("2023-11-04 12:00:00");
    $diff = date_diff($date2, $date1);
    echo $diff->format('%a天');  //format用于格式化日期间隔
    echo $diff->format('%m月');
    
    %Y    完整年份的差异
    %y    年份的差异
    %m    月份的差异
    %d    天数的差异
    %a    总共的天数差异
    %H    小时的差异
    %h    小时的差异(12小时制)
    %I    分钟的差异
    %S    秒数的差异
    %

strtime($format,$timestamp) : 根据指定的格式,

将时间戳格式化为可读的日期和时间字符串,

支持本地化的日期和时间格式

gmdate($format,$timestamp) : 根据指定的格式,将GMT时间戳格式化为可读的日期和时间字符串。

gmdate 和 date的区别

gedate()函数使用格林威治标准时间(GMT)作为默认的日期/时间基准,

会忽略服务器的时区设置,始终返回格林位置标准时间(GMT)的日期和时间

date() 函数则使用本地时间作为基准,它会根据当前服务器的时区设置来格式化日期和时间

date_default_timezone_set($timezone):    设置默认的时区。
"UTC","localtime"本地时区,"Asia/shanghai"上海时区
注意:只能在脚本开始设置默认时区,本能在运行时动态设置。

DateTime对象

  $dateTime = new DateTime("2023-11-01 12:34:33");
  //增加或减少指定的时间间隔
  $dateTime->modify('+1 day');
  $dateTime->modify('-1 hour');
  
  //设置日期部分 setDate($year,$month,$day)
  $dateTime->setDate(2024,1,3);
  
  设置时间部分  setTime($hour,$minute,$second)
  $dateTime->setime(13,1,4)
  
  设置时区
  $dateTime->setTimezone(new DateTimeZone("Asia/Shanghai"));
  
  获取时区
  $dateTimeZone = $dateTime->getTimezone();
  print_r($dateTimeZone->getName());
  print_r($dateTimeZone->getLocation());
  
  将日期时间格式化为指定的字符串格式
  echo $dateTime->format("Y-m-d H:i:s");
  
  获取时间戳
  $timestamp = $dateTime->getTimestamp();
  echo $timestamp;
  
  计算时间差
  $datetime2  = new DateTime('2024-01-01');
  $diff = $datetime->diff($datetime2);
  echo $d->format('%R %m %d %h %i %s');
  
  

特殊变量写法和常量

特殊写法

$a = 'maoshu';
$$a = "测试";

echo $a;
echo '----';
echo $$a;
echo '----';
echo $maoshu;

实际使用场景:

for ($i=0;$i<5;$i++){
    $a = "maoshu".$i;
    $$a = "测试-".$i;
}
echo $maoshu1;
echo $maoshu2;

常量

常量的值被定义后,在脚本的其他任何地方都不能被改变

命名规则和变量类似,严格区分大小写,但无需$符

注意: 默认是全局的,可以在整个运行的脚本的任何地方使用

define("MAOSHU","写代码的maoshu.fun");
echo MAOSHU;

echo "<br>";
const MAOSHU1="TOM1"
echo MAOSHU1;

$a =2;
define("MAOSHU".$a,"tom2");
echo constant("MAOSHU".$a);    constant输出正常的连接的字符串

const和define的区别

const不能在条件语句定义常量

$a = 1;
if($a == 1){
    define("TOM".$a,"汤姆");
    echo constant("tom".$a);
    
    const TOM2="汤姆猫";
    echo TOM2;
}

const用于类成员变量的定义,define不可以用于类成员变量的定义,可用于全局变量。

const可在类中使用,define不能

class  ceshi{
    const Ceshi = "汤姆猫";
    public function cc()
    {
        define('tom','写代码的程序员');
        echo self::Ceshi;    
    }
}
$c = new ceshi;
$c->cc();

常量和变量的区别:

常量前面没有美元符号($),而且不能有

常量可以不用理会变量的作用域在任何地方定义和访问

常量一旦定义就不能重新定义或取消定义

常量的值只能是标量(字符串、整数、浮点数、布尔值)、注意:现在也支持数组了

魔术常量:

它的值随着它在代码中的位置改变而改变

__LINE__

文件中的当前行号

echo '这是第' . __LINE__ .'行';

__FILE__

文件的完整路径和文件名,包含(盘符)根目录

__FILE__
文件的完整路径和文件名,包含(盘符)根目录

__DIR__

文件所在的目录

__DIR__
文件所在的目录

__FUNCTION__

该函数被定义时的名字(区分大小写)

function test(){
    echo '函数名为:' . __FUNCTION__;
}
test

__CLASS__

该类被定义时的名字(区分大小写)

<?php
    class testClass{
        function test(){
            echo '类名为' . __CLASS__ . "<br>";
            echo '函数名为' . __FUNCTION__;        
        }    
    }
    $t = new testClass();
    $t->test();
?>

__NAMESPACE__

命名空间

namespace MyPraject;
echo '命名空间为' , __NAMESPACE__;

__METHOD__

包含了:命名空间 类名 函数名

namespace TOMS;
class MyClass {
    public function myMethod(){
        echo __METHOD__;    
    }
}
$obj = new MyClass();
$obj->myMethod();

__TRAIT

当前使用的trait的名称

trait MyTrait{
    public function muMethod(){
        echo "trait的名称为:" . __TRAIT__;    
    }
}

class MyClass {
    use MyTrait;
}
$obj = new MyClass();
$obj->myMetho()d;

文件包含

在当前文件内引入其他PHP文件、HTML文件或文本文件等,一般用于包含公共方法,公共页面等,例如header footer sider等网页通用部分

include 和require 语句

区别:

include和require除了处理错误的方式不同之外,在其他方面都是相同的:

require生成了致命错误(E_COMPLE_ERROR) , 在错误发生后会停止执行。

include 生成一个警告(E_WARINING),错误发生后脚本会继续执行

因此:

如果你希望被包含的文件是必需的且缺少文件会导致脚本无法正常运行,应使用require(推荐)。

如果你希望被包含的文件是可选的,或者即使缺少文件也希望继续执行,也可以使用include。

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值