2010-07-27 164 views
0

我如何转换时间字符串是这样的:转换时间字符串到UNIX时间戳

30/7/2010

到UNIX时间戳?

我试图strtotime()但我得到一个空字符串:(

+1

'strtotime'不工作,因为(来自doc)“该函数预期会给出一个包含美国英语日期格式的字符串” – 2010-07-27 22:05:53

回答

10

PHP> = 5.3:

$var = DateTime::createFromFormat('j/n/Y','30/7/2010')->getTimestamp(); 
+0

酷,这工作,谢谢你 – Alex 2010-07-27 22:28:55

2

您可能需要使用http://us3.php.net/manual/en/function.strptime.phpstrptime),因为你的日期是在比PHP可能期待不同的格式。

+0

+1。如果您的PHP> = 5.1和日期格式不适用于strtotime,则strptime绝对是一种选择。 – 2010-07-27 22:51:37

0

你也可以其转换成的strtotime()可以接受的格式,像Y/M/d:

$tmp = explode($date_str); 
$converted = implode("/", $tmp[2], $tmp[1], $tmp[0]); 
$timestamp = strtotime($converted); 
+3

如果你打算这样做,你可能只是'mktime(0,0,0,$ tmp [1],$ tmp [0],$ tmp [2]);' – 2010-07-27 22:06:54

5

您使用英国的日期格式

快速和脏方法:

$dateValues = explode('/','30/7/2010'); 
$date = mktime(0,0,0,$dateValues[1],$dateValues[0],$dateValues[2]); 
+1

这就是我想出来的也有 - 是否真的没有函数使用日期格式字符串和文本日期字符串并返回时间戳?这似乎是一个奇怪的差距在PHP的日期界面 – 2010-07-27 22:09:30

0

的PHP 5.3答案大

DateTime::createFromFormat('j/n/Y','30/7/2010')->getTimestamp(); 

这里是一个< 5.3.0溶液

$timestamp = getUKTimestamp('30/7/2010'); 

function getUKTimestamp($sDate) { 
    list($day, $month, $year) = explode('/', $sDate); 
    return strtotime("$month/$day/$year"); 
}