2013-01-06 64 views
1

我有一个用户输入,用户输入时间和日期为'9.30am'和'01/02/02'。我试图将它转换为unix时间戳,以便在将数据从数据库中拖出时帮助排序,但strptime()令我困惑,因为我不确定这是否实际上返回了我需要的unix时间戳。将输入日期和时间的用户更改为unix时间戳

+3

使用'mktime()'或'的strtotime()' – GBD

回答

0

使用PHP的内置DateTime类...

$objDate = DateTime::createFromFormat('H:ia d/m/Y', '9:30am 1/2/2012'); 
$timestamp = $objDate->getTimestamp(); 

...返回Unix时间戳。

文档:

  1. PHP DateTime Class

    一个。 DateTime::createFromFormat

    b。 DateTime::getTimestamp

要添加变量,像这样使用它...

$objDate = DateTime::createFromFormat('H:ia d/m/Y', "$time $date"); 
$timestamp = $objDate->getTimestamp(); 

或者......

$time_date = sprintf("%s %s", $time, $date); // concatenates into a single var 
$objDate = DateTime::createFromFormat('H:ia d/m/Y', $time_date); 
$timestamp = $objDate->getTimestamp(); 

注:确保您的变量与符合以下...

$time = hh:mm (和 “AM” 或 “PM” 附加)

$date = DD/MM/YYYY

+0

似乎无法得到这个工作 - 每当我添加变量它只是停止脚本,例如:('H:ia d/m/Y','$ time $ date')或('H:ia d/m/Y',$ time $ date)。什么是正确的语法? – Sideshow

+0

@Sideshow查看我上面的修改。 PHP允许将变量插入到双引号中(大多数情况下),因此可以将变量放入字符串中作为第二个参数(或者创建一个包含“time”和“date”的变量)。确保你使用双引号;单引号**不起作用**。 –

1

您可以使用:strtotime

PHP.net例子:

echo strtotime("now"), "\n"; 
echo strtotime("10 September 2000"), "\n"; 
echo strtotime("+1 day"), "\n"; 
echo strtotime("+1 week"), "\n"; 
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n"; 
echo strtotime("next Thursday"), "\n"; 
echo strtotime("last Monday"), "\n"; 
相关问题