strtotime 将整数转换为时间戳
对于我正在开发的程序,我正在循环数据,并且我需要知道某个数据是否是日期。
为简单起见,我创建了一个名为 is_date
的函数,它看起来像这样:
function is_date($date){
return strtotime($date) !== FALSE;
}
这似乎有效,但由于某种原因,它为整数(不是日期)返回 TRUE
)。
例如:
is_date('bob') //FALSE
is_date('01/05/2009') //TRUE
is_date('March 16, 2010') //TRUE
is_date(165000) //TRUE
为什么 is_date(165000)
返回 TRUE? strtotime
如何将 165000 转换为时间戳?
作为修复,我将 is_date
函数更改为:
function is_date($date){
return !is_numeric($date) && strtotime($date) !== FALSE;
}
For a program I was working on, I am looping through data, and I needed to know if a certain piece of data was a date or not.
For simplicity, I made a function called is_date
, it looked like this:
function is_date($date){
return strtotime($date) !== FALSE;
}
This seemed to work, but for some reason, it returned TRUE
for ints (which aren't dates).
For example:
is_date('bob') //FALSE
is_date('01/05/2009') //TRUE
is_date('March 16, 2010') //TRUE
is_date(165000) //TRUE
Why does is_date(165000)
return TRUE? How can strtotime
convert 165000 to a timestamp?
As a fix, I changed my is_date
function to this:
function is_date($date){
return !is_numeric($date) && strtotime($date) !== FALSE;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我实际上刚刚想通了这一点。
strtotime
作为一种格式,可以接受 时间,而无需冒号。因此,
strtotime(165000)
与strtotime('16:50:00')
相同。http://ideone.com/Z4hwQ
I actually just figured this out.
strtotime
, as a format, can accept times without colons.Therefore,
strtotime(165000)
is the same asstrtotime('16:50:00')
.http://ideone.com/Z4hwQ