1
我有一個函數GetAsNumber(日期)在filemaker中。 例如:GetAsNumber(10/10/2008) returns 733325.
我需要編寫函數GetAsNumber與PHP.But與功能mktime()在PHP我不能做到同一個文件。獲取作爲日期編號
我有一個函數GetAsNumber(日期)在filemaker中。 例如:GetAsNumber(10/10/2008) returns 733325.
我需要編寫函數GetAsNumber與PHP.But與功能mktime()在PHP我不能做到同一個文件。獲取作爲日期編號
奇函數,但是這似乎這樣的伎倆:
function getasnumber($date)
{
$dt_date = new DateTime($date);
$dt_start = new DateTime('1/0/0001');
return $dt_date->diff($dt_start)->days;
}
var_dump(getasnumber('10/10/2008')); // 733325
var_dump(getasnumber('10/10/2014')); // 735516
值顯示,根據您提供的第一次約會是正確的回報,這other documentation。
該功能似乎被複制同樣的事情FileMaker的GetAsNumber
功能:
function GetAsNumber($str) {
static $DATE_OFFSET = 719163; // adjust because PHP is from 1980 and Filemaker from 0001
static $SECONDS_IN_DAYS = 86400; // get only days from date
if (preg_match('/^(\\d{2})[-\\/\\.](\\d{2})[-\\/\\.](\\d{2}|\\d{4})$/', trim($str), $matches)) {
$val = intval(strtotime("{$matches[1]}-{$matches[2]}-{$matches[3]}")/$SECONDS_IN_DAYS) + $DATE_OFFSET;
} else {
$val = floatval(preg_replace('/[^\\d\\.]/', '', $str));
}
return $val;
}
使用這些值測試:
echo GetAsNumber("FY98") . ' == 98' . PHP_EOL;
echo GetAsNumber("$1,254.50") . ' == 1254.5' . PHP_EOL;
echo GetAsNumber("2 + 2") . ' == 22' . PHP_EOL;
echo GetAsNumber("TKV35FRG6HH84") . ' == 35684' . PHP_EOL;
echo GetAsNumber("10/10/2014") . ' == 735516' . PHP_EOL;
echo GetAsNumber("10/10/2008") . ' == 733325' . PHP_EOL;
你們是更好的。我有一個大腦放屁,出於某種原因只做了日期部分,可能是因爲它與其他部分相比是一個很奇怪的返回值。 –