gpt4 book ai didi

php - 使用 PHP 进行高级日期验证

转载 作者:可可西里 更新时间:2023-11-01 13:59:10 25 4
gpt4 key购买 nike

我必须验证我当前项目的许多日期。不幸的是,这些日期可能相差很大。示例包括:

  1. 1983-07-10(1970年后)
  2. 1492-10-11(1970 年之前,Unix 时间戳年份 - 这消除了某些系统上的 strtotime())
  3. 公元前 200 年(真的老了……)

日期不会超过公元前 9999 年,也不会是 future (“今天”之后)。验证提交的值确实是日期以及正确日期的最佳方法是什么?

更新...

所有日期都必须在其全局列表中可排序。意思是上面的日期 1 和 3 必须相互比较,并且按 ASC 或 DESC 排序。

我完全了解过去发生的日历变化,以及围绕这些变化的困惑。我的项目假设用户已经根据我们的现代日历系统进行了适当的校准以找出日期。我不会为他们执行此校准。

最佳答案

一系列精心编写的识别每种可能格式的正则表达式怎么样。知道格式后,您就可以验证并可能将其放入统一的表示形式(例如 64 位 time_t)。

例如,

/(\d{4})-(\d{2})-(\d{2})/
/(\d+)(bc|b.c.|bce|b.c.e)/i
etc.

因为听起来每个表单都有自己的验证规则,而且您没有实现任何广泛使用的标准,所以我认为您必须分别验证每个案例。

更新:

All dates must be sortable within their global list.

在我看来,为了能够对以不同格式出现的日期进行排序,您需要在内部对每个日期进行统一表示,正如我之前提到的。例如,使用多键字典(C++中的std::multimap,PHP不确定)来存储(统一表示)->(输入表示)映射。根据容器的实现,您可能会免费获得反向查找或 key 排序。

关于php - 使用 PHP 进行高级日期验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1151074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com