首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析笨拙的日期格式

解析笨拙的日期格式
EN

Stack Overflow用户
提问于 2011-03-07 23:11:40
回答 3查看 744关注 0票数 1

我目前正在使用PHP和YQL从网站上抓取内容。我需要将尴尬的日期格式转换为UNIX时间戳,以便将其格式化为与MySQL兼容的日期。我试过使用strtotime(),但没有用。也许正则表达式才是答案?

日期示例

代码语言:javascript
复制
08Dec10
06Aug10
29Jul10
07Jun10
04May10

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-07 23:19:50

如果您使用的是PHP 5.3+

那么日期::createFromFormat函数就可以很好地满足您的需要。

代码语言:javascript
复制
$date = DateTime::createFromFormat('dMy', '08Dec10');

然后,如果您需要以不同的格式处理日期,可以做任何您想做的事情:

代码语言:javascript
复制
echo $date->format('Y-m-d');

如果您曾经能够使用DateTime函数,可以从5.2+中获得几个函数,并在5.3中添加更多的函数,那么您应该这样做。与其他功能解决方案相比,DateTime方法更具可读性。

同样,在所有解决方案中,无论是函数式还是使用DateTime对象,都要检查返回值。createFromFormat和strptime都会在出错时返回false。这样您就可以记录错误并确定问题所在。

票数 2
EN

Stack Overflow用户

发布于 2011-03-07 23:17:22

注意: strptime在Windows上不可用。

一种解决方案是使用strptime

代码语言:javascript
复制
$parts = strptime($str, '%d%b%y');

然后可以将这些值传递给mktime

代码语言:javascript
复制
$timestamp = mktime(0,0,0,$parts['tm_mon']+1, $parts['tm_mday'], $parts['tm_year']+1900);
票数 2
EN

Stack Overflow用户

发布于 2011-03-07 23:16:57

使用substr分解date组件,并使用strtotime将其重新组合起来。

代码语言:javascript
复制
<?php
strtotime('20'. substr($time, 5, 2). '-'. substr($time, 2, 3). '-'. substr($time, 0, 2));
?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5226430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档