我尝试在php中比较两个游泳时间。它们就像HH:MM:SS.XX
(XX
是hundreths)。我把它们作为字符串,我想知道哪个游泳运动员更快。我尝试使用strtotime()
转换它们。它适用于小时,分钟和秒钟,但它忽略了hundreths。这是我的代码,以便更好地解释:
$novy = strtotime($input1);
$stary = strtotime($input2);
if($novy < $stary){
//change old(stary) to new(novy)
}
如果$input1
为00:02:14.31
且$input2
为00:02:14.3
,则$novy
和$stary
均为1392850934
。
我在javascript中读到了类似问题的一些解决方案但是我不能使用它,这必须是服务器端的。
谢谢你的帮助。
答案 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";
}
答案 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秒,即原始输入的比例)。根据需要乘以/除以其他因素以获得其他因素。