在PHP中使用历史日期(如10,000或一百万年前)的最佳方法是什么?

Chr*_*ian 7 php date doctrine-orm wikidata

我正在解析Wikidata JSON数据集以收集历史数据。到目前为止,我还没有找到正确的格式将它们存储在PHP / MySQL中(通过Doctrine)。

在过去的几千年中,DateTime似乎可以正常工作,但是我不想将我的应用程序局限于此。完全有可能必须处理Universestart time属性。此外,我还想存储数据的精度,因为我们可能知道一个人的出生年份和另一个人的确切分钟。(编辑:就目前而言,日期就足够了,我可以没有时间生活,我的例子被夸大了。不过,我有时知道确切的日期,有时甚至是月份甚至年份。)

我考虑过要为日期创建自己的类(我不打算计算时差或类似的东西),但我也不想重新发明轮子。

令人遗憾的是,某些搜索引擎以及此处的搜索结果都令人...目结舌。

您可以分享任何想法或经验吗?

Cre*_*rge 1

对于一种类似的用例,我们最终存储每个时间段的值,允许将所有内容存储在数据库中并以不同的精度级别进行查询。

class YourAwesomeDateManager {

    public
        $millenium,
        $century,
        $decade,
        $year,
        $month;
        // and so on...

    function setDate() {
        // Hydrate with the best precision available
    }

    public function getDate ($precision) {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

这允许您检索不同的日期格式,并返回0不可用的精度字段

问题是对于千禧年以上的时期没有通用的名称用法。所以你必须要有创意。