2010-02-18 99 views
0

我有几个文本框,允许一个人输入时间和日期。时间与文本框输入几个小时,一个文本框的分钟,一个下拉的上午/下午和一些下拉数月/小时/年使用am/pm创建php时间戳

所以,我想结合所有这些创建一个时间戳记并将其保存到数据库中。

但我很困惑自己在如何做所有创建一个适当的时间戳,特别是AM/PM部分。

+0

什么样的时间戳? UNIX时间,MySQL时间戳? – Matchu 2010-02-18 21:28:47

回答

3

这听起来像你只是使用mktime()。通过为pm添加12来获取正确的小时数,然后将参数传递给函数。

if($is_pm) $hour += 12; 
$time = mktime($hour, $minute, $second, $month, $day, $year); 

如果你正在寻找一个MySQL的时间戳,而不是一个UNIX时间戳,你有两个选择:

  1. 使用date()建立在MySQL的格式时间戳:date('Y-m-d H:i:s', $time);
  2. 让MySQL的做对你来说:UPDATE table SET date = FROM_UNIXTIME($time) WHERE foo='bar'

或者你可以将整数时间戳记存储在数据库中作为一个整数。

+0

哦,我的那很容易。我甚至不认为这很愚蠢。谢谢! – Andelas 2010-02-18 21:33:35

2

strtotime会做到这一点:

$timestamp = strtotime("$year-$month-$day $hours:$minutes $am_pm"); 

只要确保零垫$一个月,$日,$小时,$分钟。

+0

但我期望mktime比分析字符串会有更好的性能。 – Matchu 2010-02-18 21:35:38

+0

你可能是对的,但是我对AM/PM的处理更简单一些,但是我的表现略逊一筹。 – abeger 2010-02-18 21:57:56

1

假设你已经检查了有效输入,您可以使用mktime()功能。如果选择PM,只需在小时内加12。这会给你一个Unix时间戳。您可以将该结果传递至date()以根据需要格式化日期。