📜  PHP |将字符串转换为日期和日期时间(1)

📅  最后修改于: 2023-12-03 15:03:40.090000             🧑  作者: Mango

PHP |将字符串转换为日期和日期时间

在PHP中,字符串和日期之间的相互转换是一项非常常见的任务。很多时候我们需要将一个字符串按照指定的日期格式转换为日期或者日期时间类型,以便我们进行日期的运算和比较。那么本文将主要介绍PHP中如何将一个字符串按照指定的日期格式转换为日期或日期时间类型。

使用strtotime()函数将字符串转为时间戳

PHP中有一个非常有用的函数叫strtotime,它可以将一个字符串转换为时间戳。时间戳是从1970年1月1日0点0分0秒起经过的秒数。因此使用该函数可以将任意格式的日期字符串转化为对应的时间戳。但是需要注意的是,strtotime函数只能处理的日期字符串中只有一个月、一个日和一个年份。如果字符串中还包含有小时、分钟和秒等信息,则需要分别指定这些信息的格式。

下面是使用strtotime函数将日期字符串转化为时间戳的一个例子:

$date_str = "2019-10-01";
$time = strtotime($date_str);
echo $time; // 输出1572518400,表示2019年10月1日0点0分0秒的时间戳

需要注意的是,strtotime函数在转化日期时间字符串时,虽然比较智能,但是也存在一些局限性。如果字符串格式比较特殊的话,则可能无法正确解析,从而导致转换失败。因此在实际应用中,需要特别注意日期字符串的格式。

使用DateTime类将字符串转为日期或日期时间对象

PHP中自带了一个DateTime类,该类是封装了日期和时间的一个类,可以进行日期运算和比较等操作。在PHP 5.2及以上的版本中,都可以使用DateTime类来实现字符串转换为日期或日期时间对象的功能。DateTime类有一个静态方法createFromFormat,它可以根据指定的日期格式,将一个日期时间字符串转换为对应的DateTime对象。

下面是使用DateTime类将日期字符串转换为日期类型对象的示例代码:

$date_str = "2019-10-01";
$date = DateTime::createFromFormat('Y-m-d', $date_str);
print_r($date);

上述代码中,DateTime::createFromFormat方法的第一个参数是日期字符串的格式,第二个参数则是要转化的日期字符串。该方法返回的是一个DateTime对象。

同样地,使用DateTime类将日期时间字符串转换为日期时间类型对象的示例代码如下:

$date_str = "2019-10-01 12:30:00";
$date = DateTime::createFromFormat('Y-m-d H:i:s', $date_str);
print_r($date);

需要注意的是,在使用DateTime::createFromFormat方法时,要保证传递的日期字符串与指定的格式完全一致,并且格式中的每一个标识符也要与字符串中的相应部分一致,否则会无法正确解析日期时间字符串。

将日期或日期时间对象格式化为字符串

在PHP中,如果要将一个日期或日期时间对象转换为指定的格式化字符串,可以使用DateTime类的format方法。format方法接收一个日期格式的字符串,将日期或日期时间对象格式化为对应的字符串。

下面是将DateTime对象格式化为日期字符串的示例代码:

$date_str = "2019-10-01";
$date = DateTime::createFromFormat('Y-m-d', $date_str);
$str = $date->format('Y年m月d日');
echo $str; // 输出:2019年10月1日

同样地,将DateTime对象格式化为日期时间字符串的示例代码如下:

$date_str = "2019-10-01 12:30:00";
$date = DateTime::createFromFormat('Y-m-d H:i:s', $date_str);
$str = $date->format('Y年m月d日 H:i:s');
echo $str; // 输出:2019年10月1日 12:30:00

需要注意的是,在使用format方法时,要保证传递的日期格式的标识符与指定的格式化字符串中的标识符完全一致,否则会返回非预期的结果。

总结

本文介绍了如何在PHP中将一个字符串按照指定的日期格式转换为日期或日期时间类型。我们可以使用strtotime函数将字符串转化为时间戳,也可以使用DateTime类将字符串转换为日期或日期时间类型对象,并且可以调用format方法将日期或日期时间对象格式化为指定的字符串。在使用字符串转化日期的函数或方法时,要特别注意日期字符串的格式,以确保转换的成功。