我有依赖于UNIX邮票等效条目的网站中的各个部分的时间进行排序和过滤的信号出现时间一MySQL表。我想实现一个日期选择器将输入的日期将在毫米/ dd / yyyy格式的表单字段。我一直在努力与日期转换为UNIX纪元格式添加在该行字段项。所有我所做的尝试已导致产生电流天时代时间戳。没有人有任何想法,我怎么能接受的日期格式,并在它的等效时代时间戳转换?

预先感谢。

其他信息:

我一直在努力mktime,和我得到的是今天的时代。道歉,我应该补充一些代码更早,以便更好地解释:

表单ID是“日期”的数据库字段“历元”

下面是我想要什么(失败)当我发布日期:

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

我从以前的帖子明白,这还是可以将值MM / DD / YYYY,而不是毫米,DD,YYYY为mktime预期,但后没有提供,以及如何做到这一点的分辨率。我试过str_replace函数改变“/”来“”和yeilded同样的结果 - 让今天的时代不论日期之日起进入

下面是上面的示例代码 - 这同样没有工作,但我把它添加到帮助说明我已经试过

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

感谢之前的响应,以及,我不想快速回复被忽视!

谢谢大家!

感谢大家的答复 - 的strtotime似乎是工作最好在最初的测试,并且可以去为这个格式是整个网站一致的方式。但是所有的建议与这有助于一些其他的东西都好所以再次感谢大家!

有帮助吗?

解决方案

如果你知道它总是会在该格式,将的strtotime直接转换为Unix时间戳。

strtotime($_POST['app_date']);

HTH!

其他提示

您应该看看 mktime()函数。夫妇,与任何正则表达式或的strtotime(),你就会有它。

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);

你会需要发送的DD,MM,YYYY作为单独瓦尔到mktime。这需要在$ epochold2的值作为一个字符串这将是mktime无效。

您最好的选择是使用的strtotime,因为我前面所述,或使用mktime遵循蚂蚁普的建议。

的strtotime()将解析几乎任何日期格式并返回Unix时间戳。所有你需要做的就是通过它你的日期/时间字符串:

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

正如你可以看到上面,甚至可以用它来帮助验证输入 - 如果用户输入像2008年2月31日的日期,它将返回-1

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top