需要一个与PHP的vbscript命令cdbl(现在)等效的解决方案

时间:2015-05-09 14:59:26

标签: php vbscript

使用vbscript我可以使用命令cdbl(now)从当前日期/时间检索double值。

Now = '09.05.2015 21:44:10'
cdbl(Now) = 42133,9056712963

我正在寻找一个使用php的等效解决方案,它会从当前日期/时间返回一个双倍值。

1 个答案:

答案 0 :(得分:0)

cdbl以微软格式返回datetime。在逗号日期之前 - 自1900年1月1日以来的天数。逗号时间之后 - 24小时是1.所以如果你在Unix时代内使用日期(代码可能无效,我想让它更容易理解)

function cdbl($str) {
    $datetime0 = new DateTime('1970-01-01');
    $datetime = new DateTime($str);
// 25560 - days from 1 Jan 1900 to 1 Jan 1970
    $cdbl = $datetime->diff($datetime0)->days + 25569;

// Remove time from string  - it is the sane as 00:00
    $str0 = preg_replace('/((T|\s+).+)$/','', $str);
// The number of seconds since the day start
    $time = strtotime($str) - strtotime($str0);
// The number of seconds wittin a day
    $timefullday = strtotime("$str0 + 1 day") - strtotime($str0);
    $cdbl += $time / $timefullday;
    return $cdbl;
}
echo cdbl('09.05.2015 21:44:10');

结果:

42133.905671296

如您所见,存在四舍五入的问题。如果在求和之前计算时间的打印结果,答案将与您的相同。我从来没有完成计算任务,所以我不能告诉你该怎么做。唯一的建议是转换为字符串:)

好吧,如果你选择在Unix日期之外工作,你应该写一些代码