Maison >développement back-end >Problème PHP >Comment convertir des heures, des minutes et des secondes en secondes en php

Comment convertir des heures, des minutes et des secondes en secondes en php

PHPz
PHPzoriginal
2023-04-11 10:31:311701parcourir

Dans le développement PHP, le traitement du temps est une exigence très courante. Nous devrons peut-être convertir une heure au format chaîne en un horodatage, ou nous devrons peut-être convertir l'horodatage dans un format plus lisible. Bien entendu, il existe également un besoin courant de convertir les heures, les minutes et les secondes en secondes. Alors, comment réaliser cette conversion ? Cet article présentera quelques méthodes de mise en œuvre.

Méthode 1 : fonction strtotime

La fonction intégrée PHP strtotime() peut analyser une chaîne de date et d'heure lisible par l'homme dans un horodatage UNIX. Sur la base de cette fonction, nous pouvons convertir les heures, les minutes et les secondes en secondes. Le code d'implémentation spécifique est le suivant : strtotime()可以将一个人类可读的日期时间字符串解析为UNIX时间戳。基于这个函数,我们可以将时分秒转换成秒数。具体实现代码如下:

function hmsToSeconds($hms)
{
    $seconds = strtotime("1970-1-1 $hms UTC");
    return date('H:i:s', $seconds);
}

其中,$hms为时分秒,格式为H:i:s,例如11:00:30。我们首先将时分秒和一个UNIX时间点(1970-1-1)拼接成一个完整的时间字符串,再用strtotime()函数将其转换成UNIX时间戳。最后,将转换得到的秒数格式化为时分秒输出即可。

需要注意的是,由于strtotime()函数默认使用当前时区,我们需要设置其使用UTC时区,否则可能产生时差,导致计算秒数出现错误。

方法二:explod函数

除了使用strtotime()函数外,我们还可以使用explode()函数,将时分秒字符串按照:进行分割,然后将各个部分转换成秒数,再相加得到总秒数。具体实现代码如下:

function hmsToSeconds($hms)
{
    list($hours, $minutes, $seconds) = explode(':', $hms);
    return $hours * 3600 + $minutes * 60 + $seconds;
}

其中,list()函数用于将通过explode()函数得到的数组元素赋值给相应的变量。我们将时、分、秒三个元素依次赋给$hours$minutes$seconds三个变量,然后将它们转换成秒数,再相加得到总秒数。

需要注意的是,如果时分秒字符串中某一部分为单数(例如01),需要保证传入函数时不含有前导零,否则可能被解析为八进制数而出现错误。

方法三:DateTime类

除了使用内置函数,我们还可以使用PHP提供的DateTime类,将时分秒转换成总秒数。具体实现代码如下:

function hmsToSeconds($hms)
{
    $time = date_create_from_format('H:i:s', $hms);
    return $time->getTimestamp() - strtotime('today');
}

首先,我们使用date_create_from_format()函数,将$hms格式化为H:i:s的时间对象。然后,使用getTimestamp()方法获取该对象对应的UNIX时间戳,再减去今天零点时的UNIX时间戳,即可得到该时间相对于今天零点的总秒数。

需要注意的是,由于date_create_from_format()函数返回的是一个DateTime对象,因此需要使用对象的方法获取时间戳值。

总结

在PHP开发中,将时分秒转换成秒数是一个常见的需求。我们可以使用内置函数strtotime()explode(),也可以使用DateTimerrreee

Parmi eux, $hms correspond aux heures, minutes et secondes, et le format est H:i:s, tel que 11:00:30. Nous concaténons d'abord les heures, les minutes, les secondes et un point temporel UNIX (1970-1-1) en une chaîne temporelle complète, puis utilisons la fonction strtotime() pour la convertir en un horodatage UNIX. Enfin, formatez les secondes converties en heures, minutes et secondes pour la sortie. 🎜🎜Il est à noter que puisque la fonction strtotime() utilise le fuseau horaire actuel par défaut, nous devons la configurer pour utiliser le fuseau horaire UTC, sinon les différences horaires peut se produire, entraînant des erreurs dans le calcul des secondes. 🎜🎜Méthode 2 : fonction exploser🎜🎜En plus d'utiliser la fonction strtotime(), nous pouvons également utiliser la fonction explode() pour convertir les heures, les minutes et les secondes chaîne selon  : Divisez-la, convertissez les parties en secondes et additionnez-les ensemble pour obtenir le nombre total de secondes. Le code d'implémentation spécifique est le suivant : 🎜rrreee🎜 Parmi eux, la fonction list() est utilisée pour attribuer les éléments du tableau obtenus via la fonction explode() au correspondant variables. Nous attribuons tour à tour les trois éléments heures, minutes et secondes aux trois variables $hours, $minutes et $seconds, et puis convertissez-les en secondes et additionnez-les pour obtenir le nombre total de secondes. 🎜🎜Il convient de noter que si une certaine partie de la chaîne d'heure, de minute et de seconde est un nombre impair (comme 01), vous devez vous assurer qu'il n'y a pas de zéros non significatifs lors de la transmission. la fonction, sinon elle peut être analysée comme un nombre octal et une erreur se produira. 🎜🎜Méthode 3 : classe DateTime🎜🎜En plus d'utiliser les fonctions intégrées, nous pouvons également utiliser la classe DateTime fournie par PHP pour convertir les heures, les minutes et les secondes en secondes totales. Le code d'implémentation spécifique est le suivant : 🎜rrreee🎜Tout d'abord, nous utilisons la fonction date_create_from_format() pour formater $hms en H:i:s objet temporel. Ensuite, utilisez la méthode getTimestamp() pour obtenir l'horodatage UNIX correspondant à l'objet, puis soustrayez l'horodatage UNIX à 0h00 aujourd'hui pour obtenir le nombre total de secondes de cette heure par rapport à 0 : 00 aujourd'hui. 🎜🎜Il est à noter que puisque la fonction date_create_from_format() renvoie un objet DateTime, vous devez utiliser la méthode de l'objet pour obtenir la valeur d'horodatage. 🎜🎜Résumé🎜🎜Dans le développement PHP, la conversion des heures, des minutes et des secondes en secondes est une exigence courante. Nous pouvons utiliser les fonctions intégrées strtotime() et explode(), ou nous pouvons utiliser la classe DateTime pour réaliser la conversion via différentes méthodes. . Il convient de noter qu'il existe certaines différences entre les différentes méthodes en termes d'exactitude, de légalité et de difficulté d'utilisation. Il est nécessaire de sélectionner la méthode de conversion la plus appropriée en fonction de la situation spécifique. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn