我目前正在使用PHP和YQL从网站上抓取内容。我需要将一个笨拙的日期格式转换为UNIX时间戳,以便将其格式化为MySQL兼容日期。我尝试过使用strtotime()但无济于事。也许正则表达式是答案?
日期示例
08Dec10
06Aug10
29Jul10
07Jun10
04May10
丹
答案 0 :(得分:2)
注意: strptime
在Windows上不可用。
一种解决方案是使用strptime
:
$parts = strptime($str, '%d%b%y');
然后您可以将值传递给mktime
:
$timestamp = mktime(0,0,0,$parts['tm_mon']+1, $parts['tm_mday'], $parts['tm_year']+1900);
答案 1 :(得分:2)
如果您使用的是PHP 5.3 +
然后DateTime::createFromFormat功能完全满足您的需求..
$date = DateTime::createFromFormat('dMy', '08Dec10');
如果你需要不同的格式,那么你可以用日期做任何你想做的事情:
echo $date->format('Y-m-d');
如果你能够使用DateTime功能,那么你应该在5.3中添加5.2以上的功能。与其他功能解决方案相比,DateTime方法更具可读性。
同样在所有解决方案中,无论是功能还是使用DateTime对象,都要检查返回值。 createFromFormat和strptime都会在出错时返回false。因此,您可以记录错误并确定问题所在。
答案 2 :(得分:0)
使用substr分解日期组件并使用strtotime将它们全部组合在一起。
<?php
strtotime('20'. substr($time, 5, 2). '-'. substr($time, 2, 3). '-'. substr($time, 0, 2));
?>