mm / dd / yyyy格式与PHP的纪元

时间:2008-12-11 15:46:21

标签: php timestamp epoch

我有一个mysql表,它依赖于相当于条目日期的unix纪元时间戳,以便在网站的各个部分进行排序和过滤。我正在尝试实现一个日期选择器,它将以mm / dd / yyyy格式将日期输入到表单字段中。我一直在努力将该日期转换为unix epoch格式,以在行字段中添加该条目。我所做的所有尝试都导致生成当前的纪元时间戳。有没有人知道如何采用该日期格式并转换为它的等效时间戳?

提前致谢。

其他信息:

我一直在尝试mktime,而我得到的只是今天的时代。道歉,我应该早点添加一些代码来更好地解释:

表单ID为“date”数据库字段为“epoch”

这是我在发布日期时正在尝试(失败):

$epochhold = ($_POST['date']);
$epoch = mktime(0,0,0,$epochhold);

我从之前的帖子中了解到,这仍然会提供mm / dd / yyyy的值,而不是mktime期望的mm,dd,yyyy,但帖子没有提供和决定如何做到这一点。我尝试了一个str_replace来将“/”更改为“,”并且得到了相同的结果 - 无论输入的日期如何,都获得今天的纪元日期。

这是代码示例 - 再次这不起作用,但我添加它以帮助说明我尝试过的内容

$epochhold = ($_POST['date']);
$epochold2 = str_replace('/', ', ', $epochhold)
$epoch = mktime(0,0,0,$epochhold2);

感谢之前的回复,我不希望快速回复被忽视!

谢谢大家!

感谢大家的回复 - strtotime似乎在初始测试中效果最好,并且可能是一种方式,因为这种格式在整个网站中是一致的。但所有这些建议都有助于解决这几个问题,所以再次感谢大家!

5 个答案:

答案 0 :(得分:11)

如果您知道它将始终采用该格式,strtotime会将其直接转换为unix时间戳。

strtotime($_POST['app_date']);

HTH!

答案 1 :(得分:2)

您应该查看mktime()函数。与正则表达式或strtotime()结合,你就会拥有它。

答案 2 :(得分:0)

if ( ! preg_match('#\d{2}/\d{2}/\d{4}#', $_POST['date']) ) {
    // complain about invalid input
}

list($m, $d, $y) = explode('/', $_POST['date']);
$timestamp = mktime(0, 0, 0, $m, $d, $y);

答案 3 :(得分:0)

你需要将dd,mm,yyyy作为单独的vars发送给mktime。它将$ epochold2中的值作为一个对mktime无效的字符串。

你最好的选择是按照我之前的说法使用strtotime,或者使用mktime遵循Ant P的建议。

答案 4 :(得分:0)

strtotime()将解析任何日期格式并返回Unix时间戳。您所要做的就是将日期/时间字符串传递给它:

$unix_time = strtotime($_POST['date']);
if($unix_time < 0) {
    //error case
}
else {
    //value OK!
}

如上所示,您甚至可以使用它来帮助验证输入 - 如果用户输入类似02/31/2008的日期,它将返回-1。