【发布时间】:2014-07-24 14:25:18
【问题描述】:
我有两个查询,都与日期有关。
1) 我有这些格式的日期,我希望在保存到数据库之前将其标准化为相同的格式:
- 7 月 26 日星期六
- 7 月 28 日星期一至 30 日星期三
- 2014 年 7 月 24 日
- 9 月 4 日星期四
- 8 月 28 日星期四 - 9 月 19 日星期五
- 24-07-2014
使用strtotime() 很容易计算出单日,但日期范围有点棘手。
例如,这不起作用:
$dateString = "Monday 28 - Wednesday 30 July";
if (strpos($dateString, "-")) {
$datePieces = explode("-", $dateString);
$startDate = strtotime($datePieces[0]);
$endDate = strtotime($datePieces[1]);
} else {
$startDate = strtotime($dateString);
$endDate = strtotime($dateString);
}
echo '<pre>';
echo date('d F Y', $startDate);
echo '<br/>';
echo date('d F Y', $endDate);
因为月份只在explode() 的一侧,所以这样做会返回:
01 January 1970
30 July 2014
2) 我需要一种方法来计算日期是哪一年(它总是在未来)。大致如下:
if (the month in the date string has elapsed) {
the year of the date is this year + 1
}
【问题讨论】:
-
如果您要获得非常不一致和非标准的格式,您将面临一项不可能完成的工作。您可以在 PHP 中使用任何格式的日期,但您必须知道能够做到这一点的格式。处理字符串的时候会知道格式吗?
-
日期字符串来自多个地方 - 主要来自艺术和文化场所提供的 API,以及一些没有 API 可用的网络抓取。每个 API/网站都始终使用自己的格式 - 问题是数据来自许多不同的地方。
-
但是每个地方都使用一致的格式?如果是这样,您可以肯定地处理这个问题。如果你确认我可以告诉你怎么做。
-
是的,每个来源都是一致的:)