首页 > 后端开发 > 正文

PHP中转换从Oracle中取出的日期格式问题! php 时间正则式的表示

2025-04-07 01:51:00 | 我爱编程网

最近经常有小伙伴私信询问PHP中转换从Oracle中取出的日期格式问题! php 时间正则式的表示相关的问题,今天,我爱编程网小编整理了以下内容,希望可以对大家有所帮助。

本文目录一览:

PHP中转换从Oracle中取出的日期格式问题! php 时间正则式的表示

phpstrtotime函数详解

PHP中的strtotime函数详解


PHP中的strtotime函数是一个强大的函数,用于解析人类可读的日期和时间字符串,并将其转换为Unix时间戳格式。该函数广泛应用于日期和时间的计算和转换。


函数概述


strtotime函数接受一个包含日期和时间的字符串作为输入,并尝试解析该字符串以确定相应的Unix时间戳。它支持多种日期和时间格式,包括相对日期和绝对日期。它还考虑了时区差异。通过传入特定的时间格式参数,可以进一步自定义解析过程。最后,函数返回相应的Unix时间戳,这是PHP处理日期和时间的基本格式。它非常灵活,可以用于处理各种日期和时间需求。下面详细介绍其功能和用法。 我爱编程网


函数详解


输入参数 :strtotime函数接受一个包含日期和时间的字符串作为输入。该字符串可以是绝对日期,相对日期,或者是包含时间的字符串。输入字符串的格式灵活多样,函数会尝试解析各种常见格式。


解析过程 :函数内部使用复杂的算法解析输入的日期和时间字符串。它会根据输入的字符串内容来确定日期和时间的值,并考虑时区差异等因素。它还支持对特殊字符的解释,如相对日期的标识符。这些特性使得函数能够处理各种复杂的日期和时间需求。


返回值 :strtotime函数返回解析后的Unix时间戳。这是一个整数,表示自Unix纪元以来的秒数。通过Unix时间戳,可以轻松进行日期和时间的计算和转换。在PHP中,可以使用其他函数)将Unix时间戳转换为人类可读的日期和时间格式。这种处理方式使得在PHP中进行日期和时间操作更加简便高效。除了返回时间戳外,还可以传入其他可选参数进行自定义操作,如指定时区等。具体用法可以参考PHP官方文档中的相关说明。需要注意的是,strtotime函数的解析能力并非万能,对于某些特殊格式或复杂的日期和时间表达式可能无法准确解析。因此在实际使用中需要根据具体情况进行判断和处理。同时,在使用该函数时需要注意时区差异等问题,以确保结果的准确性。

PHP中转换从Oracle中取出的日期格式问题! php 时间正则式的表示

PHP中转换从Oracle中取出的日期格式问题!

<?php
$s='22-7月 -08';//确保前后没有空格,即格式严谨如给出的
preg_match('/(?<d>\d{2})-(?<m>\d{1,2})月\s*-(?<y>\d{2})/',$s,$m);
echo date('Y-m-d',strtotime($m['y'].'-'.$m['m'].'-'.$m['d']));
==========
输出
2008-07-22
========
另,原数据只有日期没有时间,输出也不该有时间,不然就是编造的错时间。。

php 时间正则式的表示

我爱编程网(https://www.52biancheng.com)小编还为大家带来php 时间正则式的表示的相关内容。

最简单的正则 如 : \d{4}-\d{2}-\d{2}
但是实际情况却不是那么简单,,要考虑,有效性和闰年等问题.....

对于日期的有效范围,不同的应用场景会有所不同。MSDN中定义的DateTime对象的有效范围是:0001-01-01 00:00:00到9999-12-31 23:59:59。

UNIX时间戳的0按照ISO 8601规范为 :1970-01-01T00:00:00Z。

先考虑与年份无关的前三条规则,年份可统一写作

(?!0000)[0-9]{4}

下面仅考虑月和日的正则

1. 包括平年在内的所有年份的月份都包含1-28日

(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])

2. 包括平年在内的所有年份除2月外都包含29和30日

(0[13-9]|1[0-2])-(29|30)

3. 包括平年在内的所有年份1、3、5、7、8、10、12月都包含31日

(0[13578]|1[02])-31)

合起来就是除闰年的2月29日外的其它所有日期

(?!0000)[0-9]{4}-((0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])|(0[13-9]|1[0-2])-(29|30)|(0[13578]|1[02])-31)

接下来考虑闰年的实现

1 : 四年一闰
([0-9]{2}(0[48]|[2468][048]|[13579][26])

2 : 百年不闰,四百年再闰
(0[48]|[2468][048]|[13579][26])00

3 : 合起来就是所有闰年的2月29日
([0-9]{2}(0[48]|[2468][048]|[13579][26])|(0[48]|[2468][048]|[13579][26])00)-02-29)

四条规则都已实现,且互相间没有影响,合起来就是所有符合DateTime范围的日期的正则

^((?!0000)[0-9]{4}-((0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])|(0[13-9]|1[0-2])-(29|30)|(0[13578]|1[02])-31)|([0-9]{2}(0[48]|[2468][048]|[13579][26])|(0[48]|[2468][048]|[13579][26])00)-02-29)$

考虑到这个正则表达式仅仅是用作验证,所以捕获组没有意义,只会占用资源,影响匹配效率,所以可以使用非捕获组来进行优化。

^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$

以上就是我爱编程网小编整理的内容,想要了解更多相关资讯内容敬请关注我爱编程网。更多相关文章关注我爱编程网:www.52biancheng.com

免责声明:文章内容来自网络,如有侵权请及时联系删除。
标签: PHP
与“PHP中转换从Oracle中取出的日期格式问题! php 时间正则式的表示”相关推荐
PHP中如何正确格式化从SQLserver中读出的日期?
PHP中如何正确格式化从SQLserver中读出的日期?

求助thinkphp连接SQLserver2008拷贝php_sqlsrv_54_ts.dll到wampserver的bin\php\php5.4.3\ext文件夹下;添加extension=php_sqlsrv_54_ts.dll到php.iniconfig.php是这样设置的:'DB_TYPE'=&gt;'sqlsrv',//数据库类型'DB_HOST'=&gt;'192

2025-01-11 22:52:28
php时间函数格式 php 的日期函数的问题
php时间函数格式 php 的日期函数的问题

PHPDatedate函数的格式字符串列表PHP的Datedate函数提供了丰富多样的格式字符串,用于根据不同需求格式化日期和时间。以下是一些常用的格式字符串列表:d:月份中的第几天,带前导零,格式为01-31。D:星期中的第几天,文本表示,如Mon到Sun。j:月份中的第几天,无前导零,1-31。L:星期几,完整文本格式,如Su

2024-11-17 08:26:45
Date()PHP中的格式字串(php 的日期函数的问题)
Date()PHP中的格式字串(php 的日期函数的问题)

Date()PHP中的格式字串在PHP中,Date()函数提供了丰富的格式化字符串选项,以适应各种日期和时间的输出需求。以下是一些关键格式的简要说明:-d:月份中的第几天,带前导零,如"01"到"31"。-D:星期的文本表示,如"Mon"到"Sun"。-j:月份中的第几天,不带前导零,从"1"到"31"。-l或L:星期几的完整文本,如"Sunday"到"Saturda

2025-02-03 09:15:46
PHP中用日期函数显示当前年月日喝当前时间(PHP Datedate函数的格式字符串列表)
PHP中用日期函数显示当前年月日喝当前时间(PHP Datedate函数的格式字符串列表)

PHP中用日期函数显示当前年月日喝当前时间1、格式化输出时间echodate("Y-m-dH:i:s",time());//格式化输出时间//第二个时间是一个时间戳echodate("Y-m-dH:i:s",0);//0和负数返回的是格林尼治时间元年。echodate("Y年m月d日H:i:s",0);echodate(“n”,time());//月echodate(

2024-11-03 07:06:46
求一PHP的正则表达式 mysql,php 中多对多关系的问题
求一PHP的正则表达式 mysql,php 中多对多关系的问题

求一PHP的正则表达式给些关键的地方你第一个可以用"[\d]{1,3}.[\d]{1,3}.[\d]{1,3}.[\d]{1,3}"关于第2,3个用preg_match_all()函数提取4个中文,正则表达式是[\u0391-\uFFE5]+(这个是提取中文的)然后在数组中返回第二个和第三个就可以了。正则表达式我只是入门级,希望能帮到你mysql,php中多对多关系的问题

2024-09-21 18:56:46
php中怎么格式化日期
php中怎么格式化日期

PHP输出图像imagegif、imagejpeg与imagepng函数用法分析本文实例讲述了PHP输出图像imagegif、imagejpeg与imagepng函数用法。分享给大家供大家参考,具体如下:imagegif()、imagejpeg()、imagepng()和imagewbmp()函数分别允许以GIF、JPEG、PNG和WBMP格式将图像输出到浏览器或文件。PHP输出图像

2025-01-01 12:37:17
PHP从入门到精通—正则表达式—初识正则表达式、正则表达式语法规则、相关函数、常见应用、用法自查表 php中function函数的用法
PHP从入门到精通—正则表达式—初识正则表达式、正则表达式语法规则、相关函数、常见应用、用法自查表 php中function函数的用法

PHP函数代码基础知识?我们在学习PHP开发相关基础知识的时候,对于不同的开发原理以及代码的使用都是基本的能力要求。今天,霍营电脑培训就一起来了解PHP开发基础知识中的函数代码都有哪些。array()array(value1,value2..)创建数组array_chunk(array,size,preserve_keys)把一个数分割成新的数组块[tk]array

2024-11-06 16:47:36
php正则表达式怎么验证邮箱格式?
php正则表达式怎么验证邮箱格式?

php正则表达式怎么验证邮箱格式?&lt;?php$mode="/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/";$str="邮箱";if(preg_match($mode,$str,$content)){echo"输入的邮箱有效";}else{echo"您输入的邮箱格式有误";die();}?&gt;P

2024-10-06 00:34:50