php能转别的格式,用PHP将一种日期格式转换为另一种格式

匿名用户

基础知识

将一种日期格式转换为另一种格式的简单方法是将strToTime()与date()一起使用。 strToTime()将把日期转换为Unix时间戳。 然后,可以将该Unix时间戳传递给date()以将其转换为新格式。$timestamp = strtotime('2008-07-01T22:35:17.02');

$new_date_format = date('Y-m-d H:i:s', $timestamp);

或者作为一行:$new_date_format = date('Y-m-d H:i:s', strtotime('2008-07-01T22:35:17.02'));

请记住,strToTime()要求日期的格式必须有效。 如果不能提供有效的格式,将导致strToTime()返回false,这将导致您的日期为1969-12-31。

使用DateTime()

从PHP 5.2开始,PHP提供了DateTime()类,它为我们提供了更强大的工具来处理日期(和时间)。 我们可以使用datetime()重写上述代码,如下所示:$date = new DateTime('2008-07-01T22:35:17.02');

$new_date_format = $date->format('Y-m-d H:i:s');

使用Unix时间戳

date()将Unix timeatamp作为其第二个参数,并为您返回格式化日期:$new_date_format = date('Y-m-d H:i:s', '1234567890');

DateTime()通过在时间戳前添加@来处理Unix时间戳:$date = new DateTime('@1234567890');

$new_date_format = $date->format('Y-m-d H:i:s');

如果您拥有的时间戳是以毫秒为单位(它可能以000结束,并且/或者时间戳是13个字符长),您需要将其转换为秒,然后才能将其转换为其他格式。 有两种方法可以做到这一点:使用substr()删除后三位

修整后三位数字有几种方法,但使用substr()是最简单的:$timestamp = substr('1234567899000', -3);将子字符串除以1000

也可以通过除以1000将时间戳转换为秒。 由于时间戳对于32位系统来说太大,无法进行数学运算,因此需要使用BCMath库以字符串的形式进行数学运算:$timestamp = bcdiv('1234567899000', '1000');

要获取Unix时间戳,可以使用返回Unix时间戳的strToTime():$timestamp = strtotime('1973-04-18');

使用DateTime()可以使用DateTime::getTimeStamp()$date = new DateTime('2008-07-01T22:35:17.02');

$timestamp = $date->getTimestamp();

如果您正在运行PHP5.2,则可以使用u格式化选项:$date = new DateTime('2008-07-01T22:35:17.02');

$timestamp = $date->format('U');

使用非标准和不明确的日期格式

不幸的是,并非开发人员必须处理的所有日期都是标准格式的。 幸运的是,PHP5.3为我们提供了一个解决方案。 DateTime::CreateFromFormat()允许我们告诉PHP日期字符串的格式,以便将其成功解析为DateTime对象进行进一步操作。$date = DateTime::createFromFormat('F-d-Y h:i A', 'April-18-1973 9:48 AM');

$new_date_format = $date->format('Y-m-d H:i:s');

在PHP 5.4中,我们获得了在实例化时进行类成员访问的能力,这允许我们将datetime()代码转换为单行代码:$new_date_format = (new DateTime('2008-07-01T22:35:17.02'))->format('Y-m-d H:i:s');

$new_date_format = DateTime::createFromFormat('F-d-Y h:i A', 'April-18-1973 9:48 AM')->format('Y-m-d H:i:s');

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值