需要使用php为vbscript命令cdbl(现在)提供等效的解决方案吗
使用vbscript,我可以使用命令需要使用php为vbscript命令cdbl(现在)提供等效的解决方案吗,php,vbscript,Php,Vbscript,使用vbscript,我可以使用命令cdbl(now)从当前日期/时间中检索双精度值 我正在寻找一个与php等效的解决方案,它将从当前日期/时间返回一个双倍值。cdbl返回microsoft格式的日期时间。逗号日期之前-自1900年1月1日起的天数。逗号时间后-24小时为1。所以,如果您在Unix epoch中使用日期(代码可能无效,我想让它更容易理解) 结果: 42133.905671296 正如你所看到的,有一个取整的问题。如果在求和前打印计算时间的结果,答案将与您的相同。我从来没有做过计
cdbl(now)
从当前日期/时间中检索双精度值
我正在寻找一个与php等效的解决方案,它将从当前日期/时间返回一个双倍值。cdbl返回microsoft格式的日期时间。逗号日期之前-自1900年1月1日起的天数。逗号时间后-24小时为1。所以,如果您在Unix epoch中使用日期(代码可能无效,我想让它更容易理解) 结果:
42133.905671296
正如你所看到的,有一个取整的问题。如果在求和前打印计算时间的结果,答案将与您的相同。我从来没有做过计算任务,所以我不能告诉你怎么做。唯一的建议是转换为字符串:)
如果您选择在Unix日期之外工作,您应该编写一些代码,下面的函数将当前Unix时间戳作为双精度值返回:
function cdblnow(){
// time in seconds since 1 Jan 1970 (GMT)
$timeunix = time();
// add the timezone offset
$TimeZone = "Asia/Bangkok";
$dateTimeZone = new DateTimeZone($TimeZone);
$dateTime = new DateTime("now", $dateTimeZone);
$timeOffset = $dateTimeZone->getOffset($dateTime);
$timeunix = $timeunix + $timeOffset;
// determines the days between 1 Jan 1970 and today
$days = intval($timeunix / 86400);
// second count from today
$secondsremains = $timeunix % 86400;
// 25569 days difference between microsoft and unix time stamp start
$now_date = $days + 25569;
// 0.0000115741 represents one second at the cdbl-function from microsoft
$now_time = $secondsremains * 0.0000115741;
return $now_date + $now_time;}
此函数用于从双精度计数器返回unix时间戳:
function GetUnixTimeFromCdblNow($cdbl){
$days = intval($cdbl);
$seconds = round($cdbl - $days,9);
$timeunix = (($days -25569) * 86400);
$timeunix = $timeunix + intval($seconds / 0.0000115740);
return $timeunix;}
如何将函数更改为不传递,并在函数中使用格式化的日期字符串?我只希望函数使用php func time()获取当前的日期/时间值,将其转换并返回。与带cdbl的vbscript(现在)的行为相同。如何调用该函数。php中没有函数now()。询问cbbl(日期('Y-m-d H:i:s'))-相同。顺便说一下,如果答案有帮助,请不要忘记接受它:)或定义函数now()
{returndate('Y-m-dh:i:s');}
,这样您就可以调用cdbl(now())
php的func time()类似于cdbl(now))。因此,不必向函数发送日期格式的字符串来获取当前时间。我只想调用不带任何参数的函数并返回转换后的值。我只是尽量避免格式化日期字符串的开销。有什么问题吗?假设为函数的第一行,$str=date('Y-m-d H:i:s',$str)代码>
function cdblnow(){
// time in seconds since 1 Jan 1970 (GMT)
$timeunix = time();
// add the timezone offset
$TimeZone = "Asia/Bangkok";
$dateTimeZone = new DateTimeZone($TimeZone);
$dateTime = new DateTime("now", $dateTimeZone);
$timeOffset = $dateTimeZone->getOffset($dateTime);
$timeunix = $timeunix + $timeOffset;
// determines the days between 1 Jan 1970 and today
$days = intval($timeunix / 86400);
// second count from today
$secondsremains = $timeunix % 86400;
// 25569 days difference between microsoft and unix time stamp start
$now_date = $days + 25569;
// 0.0000115741 represents one second at the cdbl-function from microsoft
$now_time = $secondsremains * 0.0000115741;
return $now_date + $now_time;}
function GetUnixTimeFromCdblNow($cdbl){
$days = intval($cdbl);
$seconds = round($cdbl - $days,9);
$timeunix = (($days -25569) * 86400);
$timeunix = $timeunix + intval($seconds / 0.0000115740);
return $timeunix;}