在php中比较时间与百分之一

时间:2014-02-20 15:48:46

标签: php strtotime milliseconds

我尝试在php中比较两个游泳时间。它们就像HH:MM:SS.XXXX是hundreths)。我把它们作为字符串,我想知道哪个游泳运动员更快。我尝试使用strtotime()转换它们。它适用于小时,分钟和秒钟,但它忽略了hundreths。这是我的代码,以便更好地解释:

$novy = strtotime($input1); 
$stary = strtotime($input2);
if($novy < $stary){
   //change old(stary) to new(novy)
}

如果$input100:02:14.31$input200:02:14.3,则$novy$stary均为1392850934。 我在javascript中读到了类似问题的一些解决方案但是我不能使用它,这必须是服务器端的。 谢谢你的帮助。

4 个答案:

答案 0 :(得分:1)

如果您使用date_create_from_format,您可以指定php的确切日期格式,以将字符串表示转换为:

<?php
$input1 = '00:02:14.31';
$input2 = '00:02:14.32';
$novy = date_create_from_format('H:i:s.u', $input1);
$stary = date_create_from_format('H:i:s.u',$input2);
if ($novy < $stary) {
    echo "1 shorter\n";
} else {
    echo "2 longer\n";
}

推荐阅读:http://ie2.php.net/datetime.createfromformat

答案 1 :(得分:0)

您可以编写一些条件逻辑来测试HH :: MM :: SS是否相同,然后简单地比较XX,否则使用您已经使用的strtotime()函数

答案 2 :(得分:0)

如果格式真的是HH:MM:SS.XX(即:带前导0),你可以按字母顺序排序:

<?php
$input1 = '00:02:14.31';
$input2 = '00:02:14.32';
if ($input1 < $input2) {
    echo "1 faster\n";
} else {
    echo "2 faster\n";
}

打印1 faster

答案 3 :(得分:0)

您正在使用持续时间,而非日期。 PHP的日期和时间函数在这里没有任何帮助。您应该自己解析字符串以获得完全数字的持续时间:

$time = '00:02:14.31';

sscanf($time, '%d:%d:%d.%d', $hours, $minutes, $seconds, $centiseconds);
$total = $centiseconds
       + $seconds * 100
       + $minutes * 60 * 100
       + $hours * 60 * 60 * 100;

var_dump($total);

总数以厘秒为单位(100秒,即原始输入的比例)。根据需要乘以/除以其他因素以获得其他因素。