【问题标题】:Historical date solution [duplicate]历史日期解决方案[重复]
【发布时间】:2013-07-12 13:53:23
【问题描述】:

我必须管理各种类型的日期。我正在寻找管理日期的最佳方法,例如 600.000 a.c.e.或 5.000.000 年前以及地球诞生时可能出现的另一种日期格式

你有什么建议?

我被阻止使用如下字符串格式:yyyyyyyyyy.mm.dd.v

其中 v 是 ACE/BCE 变量

[编辑] 如果从地球诞生算起,那么450万年前就是第一天?

【问题讨论】:

  • 我想知道您正在制作什么样的应用程序需要存储3rd of March, 5.000.000 BC。你在用 PHP 做时间机器吗?
  • 您还需要指定确切的月份和日期吗?它提出了一些关于日期有效性和精度的哲学问题。
  • 问题是用户可以插入每种类型的日期,但我需要一个统一的方法来使用它。日期可以从大约 4.500.000.000 a.c.直到未来.. 我使用的字符串一年有 10 个字符,所以我可以管理大量时间,但我认为有更好的方法!
  • @mzedeler 也不必指定确切的日期,我注意到有时我们将过去称为“几年前”,例如 600.000 年前......我该如何管理这个?
  • @Mindexperiment time() - 600000 * 365.25 * 86400 表示 600000 年前

标签: php


【解决方案1】:

您可以使用任意秒数作为时间戳(当然要考虑您的拱门)

请记住任何日期都以秒为单位。

php > echo date('Y.m.d', 9000000000000000), "\n";
285200616.07.24
php > echo date('Y.m.d', -9000000000000000), "\n";
-285196677.06.10

对于 AC/BC 标志,您必须以秒为单位比较您的时间戳低于 - 1970 years

编辑

如果您使用Y 标志,在公元前1000 年到公元前0 年之间似乎存在问题。对于13 BC,年份变为0013,因此您应该考虑对这个年份范围进行额外的解析。

【讨论】:

  • it.wikipedia.org/wiki/ISO_8601 这里有一些指导方针,但还不够
  • @Mindexperiment 最好的解决方案是将有效格式输入限制为一对通用格式,而不是整个标准
  • 是的,但我必须找到正确的格式...
  • 在您提到的俄语版本的维基百科文章中,有一个表格,其中包含标准涵盖的格式示例
  • 我刚刚阅读了 DateTime 类管理每个日期的重复答案。我看看
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-09
相关资源
最近更新 更多