获取日期的数字


Get as number for date

我在filemaker中有一个函数GetAsNumber(date)。例如:GetAsNumber(10/10/2008) returns 733325.我需要用PHP编写函数GetAsNumber。但是使用 php 中的函数 mktime() 我不能在同一个文件管理器中做到这一点。

奇数

函数,但这似乎可以解决问题:

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

根据您提供的第一个日期和其他文档,返回值似乎是正确的。

这个函数似乎复制了与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;