0

我必须构建一个可以管理输入日期的 PHP 脚本,然后将其转换为特定格式(以便将其保存在 MySQL 数据库中),最后以与输入相同的格式输出第二个日期。

例如 :

我收到一个日期2013-09-01,我将其转换为并将其2013-09-01 00:00:00存储在 MySQL 中。2013-09-03然后,几天后,在这种情况下,我必须以原始格式输出一个新日期(例如输入日期 +2 天) 。

输入日期可以是各种格式,例如:

2013-09-29

2013-09-01 23:20:05

2013-09-16T11:32:01+00:00

2013-09-18T13:20:02.000Z

2013-09-09T15:16:02

我想我必须检测输入日期格式,存储它,将日期转换为内部日期存储,最后用原始格式构建一个新日期。

我的问题是我不知道如何检测输入日期格式并将其标准化以便以后使用。

有人对我有窍门吗?

谢谢

编辑:我不再需要解决方案,API 服务向我发送了一份详尽的输入日期格式列表,所以我将使用正则表达式。

4

2 回答 2

1

我强烈建议不要让人们输入他们想要的任何日期格式。我认为,如果您让人们自由支配他们如何输入日期,那么正确确定日期或日期格式将非常困难!

strtotime()可用于将字符串转换为准备存储的 UNIX 时间戳 - 但它不是一个神奇的函数!它不会“告诉”您用户输入日期的格式,以便可以将其解开并显示回来,并且它不会接受任何日期格式。

如果他们输入“2013-01-02”会发生什么,那是 1 月 2 日还是 2 月 1 日?您将如何“存储”原始日期格式,如果没有大量工作,这将是不可能的,即使如此,除非您手头有很多时间,否则您也无法用尽所有可能的日期格式。

唯一合理的方法是调整您的输入表单以仅接受您期望的日期格式,将它们与您预先确定的日期格式一起以标准格式存储在数据库中,然后使用日期以您预先确定的日期格式将它们显示在页面上()将其从 UNIX 时间戳转换为可读的东西。

于 2013-10-04T16:34:16.073 回答
0

您可以使用strtotime. 这不是一个神奇的功能,所以它不会接受任何格式。例如,您如何区分 dd-mm-yyyy 与 mm-dd-yyyy?(strtotime 假设 dd-mm-yyyy)

如果您的格式是您提供的,并且您只想要日期,那么您总是可以:

$date = substr($date, 0, 10);

还是太聪明了?:P

于 2013-10-04T16:26:23.207 回答