函数
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。