首页 > 编程语言 >php函数入门学习(date&time&strtotime)

php函数入门学习(date&time&strtotime)

时间:2024-07-09 13:52:16浏览次数:15  
标签:00 timestamp echo strtotime Unix 时间 time date

1.date()

date()函数是 PHP 中用于格式化日期和时间的一个非常常用的函数。它可以根据指定的格式字符串返回当前时间或指定时间的日期和时间。

 

基本语法:

string date ( string $format [, int $timestamp = time() ] )

- `$format`:一个格式化字符串,定义了输出的日期和时间的格式。
- `$timestamp`:一个可选的 Unix 时间戳。如果没有提供,则默认使用当前时间。

 

常用格式化字符:

- `d`:月份中的第几天(两位数字,带前导零),例如:`01` 到 `31`
- `m`:月份(两位数字,带前导零),例如:`01` 到 `12`
- `Y`:四位数的年份,例如:`2023`
- `y`:两位数的年份,例如:`23`
- `H`:小时(24 小时制,两位数字,带前导零),例如:`00` 到 `23`
- `i`:分钟(两位数字,带前导零),例如:`00` 到 `59`
- `s`:秒(两位数字,带前导零),例如:`00` 到 `59`
- `A`:大写的 AM 或 PM
- `a`:小写的 am 或 pm

 

示例

1. 获取当前日期和时间:
<?php
echo date('Y-m-d H:i:s'); // 输出:2024-07-09 13:32:09

 

2. 获取当前年份:
<?php
echo date('Y');

// 输出:2024

3. 获取当前月份的第几天:
<?php
echo date('d');

// 输出类似:09

 

4. 使用 Unix 时间戳:
<?php $timestamp = 1609459200; // 2021-01-01 00:00:00 echo date('Y-m-d H:i:s', $timestamp);

// 输出:2021-01-01 00:00:00

注意事项

- `date()` 函数返回的时间是基于服务器的默认时区。如需设置特定的时区,可使用 `date_default_timezone_set()` 函数。如:

<?php date_default_timezone_set('America/New_York'); echo date('Y-m-d H:i:s'); // 输出纽约时区的当前时间   ------  

2.time()

用于获取当前的 Unix 时间戳。Unix 时间戳是从 Unix 纪元(1970 年 1 月 1 日 00:00:00 GMT)开始到当前时间的秒数。

返回值

time()函数返回一个整数,表示当前的 Unix 时间戳。

示例:

<?php
// 获取当前的 Unix 时间戳
$currentTimestamp = time();
echo "当前的 Unix 时间戳是: " . $currentTimestamp . "\n";

// 将时间戳格式化为可读的日期和时间
$readableDate = date("Y-m-d H:i:s", $currentTimestamp);
echo "当前的日期和时间是: " . $readableDate . "\n";
?>
// 输出:当前的 Unix 时间戳是: 1720503569 当前的日期和时间是: 2024-07-09 13:39:29

 

适用场景:

1. 记录当前时间
2. 计算时间差
3. 生成唯一标识符

 

注意事项

- time()函数返回的时间戳是基于服务器的时区设置的。如果需要处理不同时区的时间,可使用 `date_default_timezone_set()` 函数来设置时区。
- Unix 时间戳在 2038 年 1 月 19 日 03:14:07(UTC)之后会溢出(对于 32 位系统),这被称为 2038 年问题。现代的 64 位系统不受此限制。

示例:

<?php
// 设置时区为东八区(中国标准时间)
date_default_timezone_set('Asia/Shanghai');

// 获取当前的 Unix 时间戳
$currentTimestamp = time();
echo "当前的 Unix 时间戳是: " . $currentTimestamp . "\n";

// 将时间戳格式化为可读的日期和时间
$readableDate = date("Y-m-d H:i:s", $currentTimestamp);
echo "当前的日期和时间是: " . $readableDate . "\n";
?>

// 输出:当前的 Unix 时间戳是: 1720503749 当前的日期和时间是: 2024-07-09 13:42:29

 

3.strtotime()

用于将英文文本格式的日期时间描述解析为 Unix 时间戳(自1970年1月1日00:00:00 UTC以来的秒数),可以解析多种格式的日期和时间字符串。

 

语法

int strtotime ( string $time [, int $now = time() ] )

参数

- $time: 一个包含英文日期时间描述的字符串。
- $now: 可选参数,表示用于计算相对日期的时间戳。如果未提供,默认使用当前时间。

 

返回值

成功时返回解析后的 Unix 时间戳,失败时返回 `false`。

 

示例

1. 基本用法

<?php
$timestamp = strtotime("now");
echo $timestamp; // 输出当前时间的时间戳
?>

// 输出:1720503994

 

2. 解析具体日期

<?php
$timestamp = strtotime("2023-10-01");
echo date("Y-m-d H:i:s", $timestamp);
?>
// 输出:2023-10-01 00:00:00

 

3. 相对时间

<?php
$timestamp = strtotime("+1 week");
echo date("Y-m-d H:i:s", $timestamp); // 输出当前时间加一周后的日期时间
?>
// 输出:2024-07-16 13:48:14

 

4. 复杂的相对时间

<?php
$timestamp = strtotime("last Monday");
echo date("Y-m-d H:i:s", $timestamp); // 输出上一个星期一的日期时间
?>
// 输出:2024-07-08 00:00:00

 

5. 结合当前时间

<?php
$now = time();
$timestamp = strtotime("+2 days", $now);
echo date("Y-m-d H:i:s", $timestamp); // 输出当前时间加两天后的日期时间
?>
// 输出:2024-07-11 13:50:08

 

注意事项

- strtotime()函数对输入的字符串格式有一定的要求,某些不标准的格式可能无法正确解析。
- 如果解析失败,函数会返回 `false`,因此在使用时最好进行错误检查。

错误检查示例

<?php
$timestamp = strtotime("+2 daysss");

if ($timestamp === false) {
echo "解析日期失败";
} else {
echo date("Y-m-d H:i:s", $timestamp);
}
?>
// 输出:解析日期失败

标签:00,timestamp,echo,strtotime,Unix,时间,time,date
From: https://www.cnblogs.com/nangras/p/18291668

相关文章

  • mysql 误更新记录恢复 update更新字段值恢复 mysql数据库更新字段值恢复
    近日极佳mysql数据库恢复软件加入mysql的 update更新字段值的恢复例如 updatejnx_clean_ordersetno='qwertyuiop'将 jnx_clean_order 表的 no字段值 全部变成了 qwertyuiop  这种情况 1可以从 mysqlbin 日志恢复, 如果没有开启binlog 那就比较麻烦了。2......
  • 解决RuntimeError: Numpy is not available
    解决RuntimeError:Numpyisnotavailable首先遇到问题界面:在vscode首次运行importnumpyasnp报错:大致含义:模块不兼容:这个错误信息表示你当前运行的环境中,某些模块是使用NumPy1.x版本编译的,而你当前的NumPy版本是2.0.0。由于版本不兼容,这些模块可能会崩溃或产......
  • Angular debounceTime、Subject、Ng-Zorro中的tabs导航
    在项目过程中,遇到了一些比较新的知识点,记录下来。1.rxjs核心概念之Subjectsubject是最简单的一种Subject类型,它既是可观察对象(Observable),也是观察者(Observer)。Subject会维护一个观察者列表,并将通知到任何订阅它的观察者。/***搜索订阅者*/privatese......
  • ROS2开发BUG记录:在将 use_sim_timer 置为 true 时,节点的 Timer_Callback 行为“异常”
    问题:在将use_sim_timer置为true时,节点Timer_Callback行为“异常”。在回调函数中,使用self.get_logger().info("xxxx")输出信息,希望通过查看Info中的时间戳(如下),测试Timer_Callback回调频率是否正常。发现该时间戳与预期回调频率不符。[target_server-7][INFO][17......
  • [UVM]IC验证自动结束仿真函数——uvm_top.set_timeout/set_report_max_quit_count
    Title:[UVM]IC验证自动结束仿真函数——uvm_top.set_timeout/set_report_max_quit_count文章目录1-前言2-uvm_top.set_timeout3-set_report_max_quit_count4-运用5-小结1-前言​数字IC验证过程中,需要运行不同Testcase,有些TC会因为TC配置、TB机制等原因,导致m......
  • mormot.core.threads--TSynBackgroundTimer
    mormot.core.threads--TSynBackgroundTimertype//TSynBackgroundThreadProcess类声明(稍后定义)TSynBackgroundThreadProcess=class;///由TSynBackgroundThreadProcess定期执行的事件回调TOnSynBackgroundThreadProcess=procedure(Sender:TSynBackgroundThr......
  • R语言数据格式转换:字符串(Strings)转为日期类型(Dates)
     R语言数据格式转换:字符串(Strings)转为日期类型(Dates)目录 R语言数据格式转换:字符串(Strings)转为日期类型(Dates)as.Date函数单个字符串到日期类型字符串向量到日期类型向量dataframe一列从字符串到日期类型dataframe多列从字符串到日期类型 as.Date函数通常,当您......
  • CodeForces CF1986C Update Queries题解
    来吧,兄弟们,再来篇题解,其实也不是题解,是我自己的思路/心得/体会UpdateQueries题面翻译题目翻译一共$t$组数据,每组数据给定长度为$n$的字符串$s$,长度为$m$的$ind$数组和字符串$c$。你可以任意安排$ind$数组和字符串$c$的顺序,并按照此顺序对字符串$s$进行$m$......
  • 有一个日期(Date)类的对象和一个时间(Time)类的对象,均已指定了内容,要求一次输出其中的日期
            可以使用友元成员函数。在本例中除了介绍有关友元成员函数的简单应用外,还将用到类的提前引用声明,请读者注意。编写程序:运行结果:程序分析:        在一般情况下,两个不同的类是互不相干的。display函数是Time类中的成员函数,它本来只可以用来输出Tim......
  • 解决《龙珠斗士Z》游戏启动问题:api-ms-win-crt-runtime-l1-1-0.dll文件缺失的详细指南
    对于热爱格斗游戏和《龙珠》系列的玩家来说,《龙珠斗士Z》无疑是一款令人兴奋的作品,它以其精美的画面、流畅的战斗体验以及对原作角色的精彩还原而受到广大玩家的喜爱。然而,在享受这场动漫与格斗完美融合的盛宴之前,一些玩家可能会遇到一个让人头疼的技术问题——游戏启动时提示......