PHP的时间函数

OpenRA引擎实战:如何从零开始搭建一个经典RTS游戏模组(附资源包) 本文详细介绍了如何利用开源游戏引擎OpenRA从零开始搭建经典RTS游戏模组。内容涵盖开发环境配置、资源管线处理、YAML规则定义、地图编辑与Lua脚本编写等全流程实战指南,并提供了资源包,帮助开发者和爱好者快速创建属于自己的即时战略游戏世界。 阅读详情

PHP中时间相关的函数还是挺多的,本文只整理四个最常用的。分别是date(), time(), microtime()和strtotime()。每个函数的具体语法,大家可以自行翻手册,这里不再赘述,这里会按照下面三个主题进行讨论。

 

日期相关 

日期相关主要指的是date()函数,date()函数中有很多格式字符,你可以根据需要,自行选择合适的日期格式输出。可能PHP工程师最熟悉的就是下面的代码:

// 获取当前时间:2018-09-01 18:15:56

echo "获取当前时间:" . date('Y-m-d H:i:s'), '<br>';

而我想要强调的是大家不太熟悉,但又很有用的格式字符。例如:

// 星期几(英文全称):Saturday

echo "星期几(英文全称):" . date('l'), '<br>';

 

// 星期几(英文全称):Sat

echo "星期几(英文缩写):" . date('D'), '<br>';

 

// 星期几(英文全称):6

echo "星期几(数字表示):" . date('w'), '<br>';

 

// 月份(英文全称):September

echo "月份(英文全称):" . date('F'), '<br>';

 

// 月份(英文全称):Sep

echo "月份(英文缩写):" . date('M'), '<br>';

 

// 月份(英文全称):09

echo "月份(数字表示):" . date('m'), '<br>';

 

// Asia/Shanghai

echo "时区:" . date('e'), '<br>';

 

// CST       China Standard Time

echo "本地时区:" . date('T'), '<br>';

 

// 一年中的第几天(0-365):243

echo "一年中的第几天(0-365):" . date('z'), '<br>';

 

// 一年中的第几周(1-54):35

echo "一年中的第几周(1-54):" . date('W'), '<br>';

 

// 固定小时:2018-09-01 12:15:56

echo "固定小时:" . date('Y-m-d 12:i:s'), '<br>';

 

固定分钟:2018-09-01 18:00:56

echo "固定分钟:" . date('Y-m-d H:00:s'), '<br>';

 

// 固定秒数:2018-09-01 18:15:00

echo "固定秒数:" . date('Y-m-d H:i:00'), '<br>';

以上代码可能的应用场景有:

  • 获取当前时间

  • 获取星期几,因为周一到周五与周六日的业务逻辑可能不同,所以要区分

  • 时间粒度划分。获取一年中第几天或第几周,甚至对获取月份进行简单封装后,还能获取一年中的季度数,例如1,2,3月是第一季度。这些时间数据对于统计,计划任务等可能有用。例如:银行的计息,可能按照月度,季度或年来分别执行。

  • 固定时间在需要固定计数的场景下用的比较多,例如:拍卖,可能是下午5点钟01分正式开拍,所以这是需要将时间固定好;或者是计划任务执行,时间不到进程就先睡一会儿,时间到了再执行。

以上还有很多应用场景,大家可以自行对号入座。

 

时间戳相关

有的时候我们可以需要时间戳。例如:保存时间是用时间戳要比日期时间格式占用空间更小;计算时间时也更方便。下面我按照“秒”,“毫秒”(1秒=1000毫秒(ms

)和“微妙”(1秒=1 000 000 微秒(μs) )三个单位来分别获取:

// echo 当前时间戳(以秒为单位):1535796956

echo "当前时间戳(以秒为单位):" . time(), '<br>';

 

// 当前时间戳(以毫秒为单位):1535796956916

function mtime()

{

    list($msec, $sec) = explode(" ", microtime());

    return ceil(((float) $msec + (float) $sec) * 1000);

}

echo "当前时间戳(以毫秒为单位):" . number_format(mtime(), 0, '', ''), '<br>';

 

// 当前时间戳(以微妙秒为单位):1535796956916023

function utime()

{

    list($usec, $sec) = explode(" ", microtime());

    return ceil(((float) $usec + (float) $sec) * 1000000);

}

echo "当前时间戳(以微妙秒为单位):" . number_format(utime(), 0, '', ''), '<br>';

PHP中time()可以直接返回以秒为单位的时间戳,而microtime()返回的结果则包含小数秒部分。以上分别获取了秒,毫秒和微妙为单位的时间戳,其中的毫秒获取,类似JS中的getMilliseconds()。在应用时,要根据不同的时间粒度来选择,例如:

  • 普通的创建时间,日志记录等用以秒为单位的时间戳就够了

  • 而在“秒杀”或“竞拍”这种高可用场景下可能就需要毫秒计时了;

  • 而在消息队列或密集计算等场景下,就可能需要根据微妙排序了

以上代码中我对取到的结果进行了向上取整(ceil()),如果业务中需要向下取整,可自行调节。

 

时间范围相关

最后,回答一下刚开始提到的问题。如果我有一张订单表(order)。那么,我如果将过去一周,或过去三个月的订单做统计呢(例如:统计订单数或销售额)。

首先我们来看一个逻辑最简单的实现:

// 在当前时间戳的基础上减去7天的秒数,获取的就是7天前的时间

$nextWeek = time() - (7 * 24 * 60 * 60);

 

// 当前时间:2018-09-01

echo '当前时间:' . date('Y-m-d') . '<br>';

 

// 上周: 2018-08-25

echo '上周: ' . date('Y-m-d', $nextWeek) . '<br>';

另外还可以通过strtotime()来实现,起始更简单

// 上周: 2018-08-25

echo '上周: ' . date('Y-m-d', strtotime('-1 week')) . '<br>';

 

// 上个月: 2018-08-01

echo '上个月: ' . date('Y-m-d', strtotime('-1 month')) . '<br>';

 

// 前三个月: 2018-06-01

echo '前三个月: ' . date('Y-m-d', strtotime('-3 month')) . '<br>';

 

上面两个例子都是获取过去的时间,另外,还可以获取未来的时间,例如:

// 下周: 2018-09-08

echo '下周: ' . date('Y-m-d', strtotime('+1 week')) . '<br>';

 

// 下周四: 2018-09-06

echo '下周四: ' . date('Y-m-d', strtotime('next Thursday')) . '<br>';

 

// 下周又2天又4小时又2秒: 2018-09-10 22:15:58

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

以上代码对时间的处理实际上可以分为两类:过去的时间和将来的时间。而这两类分别对应下面的两种主要的应用场景:

  • 统计。例如统计一下过去一个月一共有多少订单。可能的SQL语句是这样

    SELECT count(*) FROM order WHERE created > 上个月的时间戳

  • 预定。例如预定宾馆(未来的时间段)或者买票(未来的时间点)

转自PHP大象公馆 ,微信搜索公众号PHP大象公馆 

【gridsample】地平线征程6芯片中gridsample算子的优化与部署实践 本文详细介绍了地平线征程6芯片中gridsample算子的优化与部署实践,重点探讨了PTQ和QAT量化方案在BEV感知任务中的应用。通过双线性插值优化、内存布局调整和混合精度配置等关键技术,显著提升了算子在自动驾驶场景下的性能和精度,为开发者提供了实用的部署指南和调优建议。 阅读详情

相关推荐

SAP VC实战:用CU01和CS02搞定BOM里的‘智能’对象相关性(附语法避坑指南)

在工业制造领域,产品配置的复杂性往往超出想象。想象一下,当客户需要定制一台工业设备时,可能有数百种配置选项相互影响——从基础材质到动力系统,从控制模块到安全装置。如何在SAP系统中优雅地管理这种复杂性?对象相关性(Object Dependencies)就是解决这一挑战的利器。

weixin_42524824的博客 467

php 日期函数大全,非常全面的php日期时间运算汇总

实例讲解之前,先来介绍几个核心函数:mktime 函数mktime() 函数返回一个日期的 Unix 时间戳。参数总是表示 GMT 日期,因此 is_dst 对结果没有影响。参数可以从右到左依次空着,空着的参数会被设为相应的当前 GMT 值。语法:mktime(hour,minute,second,month,day,year,is_dst)参数 描述hour...

weixin_34668147的博客 1660

告别OLE!Delphi操作Excel的3种轻量级方案横向评测(FlexCel/XLSReadWriteII/LibXL)

本文深入评测了Delphi操作Excel的三种轻量级方案:FlexCel、XLSReadWriteII和LibXL。通过技术架构、API设计、性能测试和实战案例的全面对比,帮助开发者选择最适合的工具,提升Excel文件处理效率,告别传统OLE方案的依赖和性能问题。

onion的博客 929

php 常用的时间函数大全,php常用日期时间函数实例小结

本文实例讲述了php常用日期时间函数。分享给大家供大家参考,具体如下:时间戳时间戳我就不赘述了,手册里有,就是能精确的表示一个时间点。我在做项目的时候经常用时间戳来表示数据,这样比较方便,如果保存为日期时间型的数据,显示的时候可能比较省事,但是如果是获取这个日期的某个年份或月份,就比较麻烦了。echo time();//返回一个以秒为单位的时间戳 :1467968841echo microtime...

weixin_39677203的博客 416

MacX DVD Ripper Pro for Mac(DVD解码器) 6.2.120190416免激活版

只需要5分钟即可转档一张DVD光碟!并允许我们在编码之前预览、编辑、裁剪、修剪或扩展视频。第一款也是唯一一款能够支持DVD到MP4,H.264,MOV,FLV,MPEG4等所有格式DVD(新DVD,99-标题DVD,损坏和无法播放的DVD)和翻录DVD / ISO映像的工具,AVI,QT,MP3等。借助350多种预设配置文件MacX DVD Ripper Pro for Mac(DVD解码器) 6...

llhf688的博客 890

Qwen2.5-7B大模型实战:从零部署到高效推理全流程解析

本文详细解析了Qwen2.5-7B大模型从零部署到高效推理的全流程。内容涵盖环境准备、模型下载、使用Transformers进行核心对话推理,并深入介绍了vLLM与TGI生产级服务部署、GPTQ/AWQ量化技术以降低显存消耗,以及llama.cpp、Ollama等本地推理方案。旨在帮助开发者快速掌握部署技巧,实现大模型在消费级硬件上的高效运行。

weixin_29061425的博客 490

深入浅出:PHP 时间和日期函数

mktime()函数用于根据给定的日期和时间参数生成一个 Unix 时间戳。这在需要创建特定日期的时间戳时非常有用。php?这段代码会输出自定义日期的时间戳及其格式化的日期。

软件架构师笔记 1939

CV领域交叉注意力机制:QKV在图像特征增强中的核心作用解析

本文深入解析了CV领域中交叉注意力机制的核心组件QKV在图像特征增强中的关键作用。通过通俗类比和实战案例,阐述了Q(查询)、K(键)、V(值)如何协同实现动态权重分配,从而在目标检测、图像分割与生成等任务中显著提升模型性能与语义对齐能力。

weixin_29194817的博客 436

PHP中的日期和时间函数有哪些?如何使用?

PHP中提供了多种日期和时间函数,用于处理和格式化日期和时间。这个函数可以接受一个格式字符串作为参数,该格式字符串定义了输出的日期和时间格式。time();这个函数不接受任何参数,返回一个整数,表示当前时间的Unix时间戳。这个函数可以接受多种文本描述的时间,如“yesterday”、“tomorrow”等。这个函数可以接受一个Unix时间戳作为参数,返回一个关联数组,包含日期和时间的详细信息。这个函数接受六个参数,分别表示小时、分钟、秒、月份、日期和年份。这个类提供了丰富的功能,如日期比较、时间差计算等。

破损的天堂鸟博客 2169

Vue3项目实战:用vue-print-nb搞定多页表格打印(附样式不丢失解决方案)

本文详细介绍了在Vue3项目中,如何利用vue-print-nb插件解决Element Plus多页表格打印的样式丢失与分页错乱等核心难题。通过分离打印视图、编写专用CSS控制分页行为、以及深入理解浏览器打印原理,提供了一套从基础配置到高级技巧的完整企业级打印解决方案,确保打印输出专业可靠。

linux的博客 1232

【微信小程序-uniapp】CustomPicker 自定义单项选择器组件

自定义底部弹出框单项选择器组件,适用于uniapp小程序

Komorebi_00的博客 1532

php 日期函数大全,常用php时间函数用法汇总

1.设置时区的方法:php5后都要自己设置时区,要么修改php.ini的设置,要么在代码里修改。在PHP.INI中设置时区date.timezone = PRC在代码中设置时区1 date_default_timezone_set('Asia/Shanghai');//'Asia/Shanghai' 亚洲/上海2 date_default_timezone_set('Asia/Chongqin...

weixin_35725310的博客 1674

【导航理论&实战篇】四足机器人弹簧倒立摆(SLIP)动力学模型

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对四足机器人动力学模型-VMC、SLIP和浮动机体模型做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章四足机器人弹簧加载倒立摆(SLIP)动力学模型是一种用于描述和分析四足机器人在运动过程中动态特性的理论模型。这种模型将四足机器人的腿部简化为弹簧,而机器人的身体则被视为一个倒立摆,这样的抽象使得研究者能够更容易地分析和控制机器人的运动。提示:以下是本篇文章正文内容。

qq_35635374的博客 805

php时间函数引入,php 时间函数

php时间函数的灵活使用question:获取本月最后一天的当前时间例如:当前时间为2018-05-25 15:48:12得到时间:2018-05-31 15:48:12$d = date('d');//没用上$days = date('t');//获取本月的天数--可以得到最后一天的日期$date = date('H:i:s');//得到当前的时分秒$lastDayTime = date('Y-...

weixin_29531177的博客 137

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

php 时间函数详解,PHP时间函数使用详解

PHP时间函数使用详解来源:中文源码网浏览: 次日期:2019年11月5日【下载文档:PHP时间函数使用详解.txt】(友情提示:右键点上行txt文档名->目标另存为)PHP时间函数使用详解PHP开发中,关于时间函数的使用基本上可以说是无处不在,而PHP中操作时间的方法也很多,比如PHP时间戳、日期与时间戳之间的转换、获取当前日期、当前时间之前或之后的时间等等,下面我们...

weixin_33435115的博客 272

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

php的时间日期函数,php日期函数与php时间函数

这篇文章主要介绍了关于php日期函数与php时间函数,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下一:checkdate() 函数验证一个日期。checkdate(month,day,year)如果指定的值合法,则该函数返回 true,否则返回 false。日期在下列情况下为合法:month 介于且包括 1 - 12Day 的值在给定的 month 所应该具有的天数范围之内,闰年已...

weixin_36278243的博客 504

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

php关于时间函数大全

php关于时间函数大全 date函数 string date(string format[, int timestamp]) 描述:格式化一个本地时间/日期 format格式: Y:4位数字完整表示的年份 y:2位数字表示的年份 F:月份,完整的文本格式 M:三个字母缩写表示的月份 m:数字表示的月份,有前导零 n:数字表示的月份,没有前导零 d:月份中的第几天,有前导零 j:月份中的第几天,没有前导零 l:星期几,完整的文本格式 D:星期中的第几天,文本

struggle_boy的博客 388

PHP常用日期时间函数

PHP常用日期时间函数

duke_ding2的博客 956

PHP时间函数

PHP时间函数 2. echo date('Y-m-d H:i:s',strtotime('now'));//当前时间戳 2017-01-09 21:04:11 3. echo date('Y-m-d H:i:s',time()); 4. echo date('Y-m-d H:i:s',strtotime('+1second'));//当前时间戳+1秒 2017-01-09 21:04:12...

Big_sky的博客 291

php时间函数

PHP中的时间函数有这么些:(1)date用法: date(格式,[时间]);如果没有时间参数,则使用当前时间. 格式是一个字符串,其中以下字符有特殊意义:U 替换成从一个起始时间(好象是1970年1月1日)以来的秒数 Y 替换成4位的年号.y 替换成2位的年号.F 替换成月份的英文全称.M 替换成月份的英文简称.m 替换成月份数.z 替换成从当年1月1日以来的天数.d 替换成日数.l...

dengsuqiang0348的博客 238

php时间函数引入,php时间函数,即拿即用

时间差函数function tranTime($time){$rtime = date("m-d H:i", $time);$htime = date("H:i", $time);$time = time() - $time;if ($time < 60) {$str = '刚刚';} elseif ($time < 60 * 60) {$min = floor($time / 60)...

weixin_36102010的博客 223

php 与时间有关的函数,PHP时间相关常用函数用法示例

本文实例讲述了PHP时间相关常用函数用法。分享给大家供大家参考,具体如下:/*** 设置时区*/date_default_timezone_set("Asia/Shanghai");/*** 获取时区*/echo date_default_timezone_get();//结果 UTCecho "";/*** 添加时间*/$date=date_create("2013-03-15"); //创建一...

weixin_31767787的博客 125

php比较两个时间的函数,php中日期时间比较三个函数_PHP教程

文章介绍了三种常用的日期时间比较格式的函数,一个是对整日期,一个是只对时间比较,最后一个是专业比较时间差可以到秒。日期比较如 2011-11-11 2011-12-12代码如下复制代码function compare_date( $DATE1, $DATE2 ){$STR = strtok( $DATE1, "-" );$YEAR1 = $STR;$STR = strtok( "-" );$MO...

weixin_28720573的博客 518

php 与时间有关的函数,PHP常用时间相关函数介绍

支持以下函数的PHP版本(PHP 5 >= 5.1.0, PHP 7)1、获取默认时区date_default_timezone_get()2、设置时区date_default_timezone_set(‘Asia/Shanghai') //设置为上海ini_set('date.timezone','Asia/Shanghai')//设置为上海3、time函数time ( void ) :...

weixin_36473855的博客 517

PHP 时间戳及时间函数

一、PHP 时间戳 PHP 时间戳 UNIX 时间戳(timestamp)是 PHP 中关于时间日期一个很重要的概念,它表示从 1970年1月1日 00:00:00 到当前时间的秒数之和。 PHP提供了内置函数 time() 来取得服务器当前时间的时间戳。 时间差 时间戳虽然看起来好像不太直观,但我们在对时间做计算时却很方便。例如我们要计算时间差,或者对两个时间做比较等,直接比较

zzyymaggie的专栏 1518

php日期时间函数

php函数的多样化和功能相近真是一大特点,同一个应用可以用多种函数实现,这恐怕也是开源的一个弊端了;       通过对PHP时间函数的系统学习,充分理解了时间戳和时区的概念(这个真的很重要);       本人把时间函数区分为了时间戳函数(返回值为时间戳)和格式化时间函数(返回时间格式的字串或数组);       在时间戳函数中,当然time()函数是最重要的了,但是他只能返回当前时间戳,

6197
下一篇: php去除数组中重复值,并返回结果!
withoutfear
博客等级 码龄13年 541粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值