0

我有一个要导入的 Excel 表,但我希望将一些数据转换为分钟。虽然格式各不相同,但我5h 5m 6.64s如何6.64s能够在 PHP 中将其转换为仅几分钟?(我肯定DateTime::createFromFormat()不会工作,因为它的范围是从 0 到 59。)

是否将转换为分钟是一种更容易在 PHP 应用程序中操作和绘制图形的格式,或者将其转换为 PHP 类中的某个时间对象更好?

请记住,必须对数据进行格式化,然后将其导入 MySQL 服务器,然后读回 PHP 应用程序以绘制图表以用于统计目的。我也在使用 cakePHP 框架来构建应用程序。感谢您的任何反馈。

4

2 回答 2

2

如果所有时间都有像 hms 这样的格式(其中任何一个都是可选的),我认为提取数字一点也不难。这可以通过一个简单的正则表达式来完成,例如:

/(([0-9]{1,2})h)?(([0-9]{1,2})m)?(([0-9]{1,2}\.[0-9]{0,2})s)?/

然后您可以简单地将这些数字放入 PHP 的DateTime对象中。并将其转换为存储在数据库中的格式。

于 2013-01-07T18:29:37.290 回答
1

如果字符串的不同部分总是用空格分隔,您可以简单地使用:

$timeParts = explode(' ', $timestring); //Separates your time string in parts
//To sum these parts into a total number of minutes:
//First make an array with all multiplication factors to go from part of string to a number of minutes
$factors = array(1/60, 1, 60, 60*24); //Last value is for days, which are probably not necessary.

//Iterate through the $timeParts array
$minutes = 0;  //Create $minutes variable, so we can add minutes to it for each string part
while($part = array_pop($timeParts)) { //Process each part of the string, starting from the end (because seconds will always be there even if minutes aren't)
    $part = floatval($part);   //I guess your numbers will technically be strings, so we need to convert them to floats (because the seconds need to be floats). Also, this function should strip off any letters appended to your numbers.
    $factor = array_shift($factors);  //Take the first part of the $factors array (because in that array the seconds are first, then minutes and so on)
    $minutes += ($part * $factor);  //Multiply the string part by its matching factor and add the result to the $minutes variable.
}

我还没有测试过,所以你需要自己调试它。

于 2013-01-08T12:05:05.883 回答