您具有以下格式:
Sunday 16th of January 2011 06:55:41 PM
这是基于字符串的格式,因此日期信息或多或少以人类可读的格式编码。幸运的是英语。让我们看看,这是由空格分隔的多个事物:
Sunday - Weekdayname
16th - Date of Month, numeric, st/nd/th form
of - The string "of".
January - Monthname
2011 - Year, 4 digits
06:55:41 - Hour 2 digits 12 hours; Colon; Minute 2 digits; Colon; Seconds 2 digits
PM - AM/PM
因此,您可以按空间分隔每个节点,然后分析数据。您只需要所有月份名称和sscanf
函数,因为您只需要月份、月份和年份:
$input = 'Sunday 16th of January 2011 06:55:41 PM';
$r = sscanf($input, "%*s %d%*s of %s %d", $day, $monthname, $year);
这已经为您提供了以下变量:
$monthname - string(7) "January"
$day - int(16)
$year - int(2011)
所以剩下要做的就是将月份名称转换为一个数字,这可以通过映射(在 PHP 中以数组的形式)和一些格式化的输出来完成:
$monthnames = array(
'January' => 1,
# ...
);
printf("%02d-%02d-%04d", $day, $monthnames[$monthname], $year);
因此,无论哪个问题,只要输入的格式有点一致,您就可以将其分开,处理获得的数据并根据您的需要进行输出。这就是它的工作原理。