首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在php中更改日期格式

在php中更改日期格式
EN

Stack Overflow用户
提问于 2010-01-10 22:43:42
回答 8查看 10.6K关注 0票数 6

我开发了一个网页,因为我需要将日期格式从22/01/2010更改为2010-01-22我使用了以下函数,但我得到了一个警告,因为“已弃用:函数ereg()在c:\wamp\www\testpage.php的第33行中已被弃用”。有没有办法隐藏这个错误,或者有没有其他方法来改变日期格式?请帮我解决这个问题。提前谢谢。

代码语言:javascript
运行
复制
$datedue = $_REQUEST['txtJoiningdate'];
        $r = ereg ("([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})", $datedue, $redgs);
        $billdate=$redgs[3]."-".$redgs[2]."-".$redgs[1];
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-01-10 22:48:03

您正在使用不推荐使用的函数。请改用preg_match。另外,对preg_match的调用应该在if测试中。

代码语言:javascript
运行
复制
<?php
$datedue = '22/01/2010';
if(preg_match('@([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})@', $datedue, $redgs)) {
    $billdate=$redgs[3]."-".$redgs[2]."-".$redgs[1];    
    echo $billdate; // prints  2010-01-22 
}
?>
票数 7
EN

Stack Overflow用户

发布于 2010-01-10 22:56:40

为什么不使用php自带的strtotimedatestr_replace函数在一行简单的代码中完成这个任务呢?

通过这种方式,您可以使用date提供的许多选项轻松地将日期格式更改为您想要的任何格式。

代码语言:javascript
运行
复制
echo date('Y-m-d',strtotime(str_replace("/",".","22/01/2010")));

输出2010-01-22

所用函数的文档:

  • strtotime
  • date
  • str_replace
票数 11
EN

Stack Overflow用户

发布于 2010-01-10 22:46:34

这应该可以做到:

代码语言:javascript
运行
复制
list($d, $m, $y) = explode('/', $datedue);
$billdate = date('Y-m-d', mktime(0,0,0,$m,$d,$y);

或者,这可以没有Gumbo建议的日期函数:

代码语言:javascript
运行
复制
list($d, $m, $y) = explode('/', $datedue);
$billdate = "$y-$m-$d"; 

不过,如果您怀疑将来需要更改格式,我建议您使用date。对于这样的简单拆分,不需要使用正则表达式。在这种情况下,爆炸会快得多。

从PHP5.3.0起,ereg_正则表达式函数将被弃用,并将在PHP6中删除。对于正则表达式,请使用preg_函数。

关于隐藏错误;在开发时永远不要隐藏通知,因为它们可以帮助您构建更好的代码。如果没有这个通知,当服务器更新到PHP6时,你会很高兴地使用ereg,你的应用程序也会崩溃。但是,你可以用error_reporting()来控制显示的错误数量。当你的网站上线时,关闭error_reporting可能是个好主意。

顺便说一句,如果你觉得有帮助,就开始接受一些答案。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2037319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档