2014-10-10 160 views
0

如何转换2014年10月4点13分24秒2014-10-10T04:13:24 + 00:00在PHP或MySQL如何日期时间转换为unix命令日期

上面提到的日期是在站点地图

对于参考校验Q: How do I compute lastmod date? (Sitemaps.org FAQ)

代码的XML格式,我曾尝试:

echo "GIVEN DATE ".$timestamp = "2014-10-10 04:13:24"; 
echo "<br>"; 

$year = date('Y',strtotime($timestamp))."; 
$month = date('m',strtotime($timestamp))."; 
$day = date('d',strtotime($timestamp)).""; 
echo '<br>'; 
$hour = date('H',strtotime($timestamp)).""; 
$minutes = date('i',strtotime($timestamp)).""; 
$seconds = date('s',strtotime($timestamp))."<br>"; 


$gmktime= gmmktime($hour,$minutes,$seconds,$month,$day,$year)."<br>"; 

echo "output date".$isodate = date('c', $gmktime); 

上述输出转换是否正确?

**OUTPUT** 

GIVEN DATE : 2014-10-10 04:13:24 

output date : 2014-10-10T06:13:24+02:00 
+3

哪里有区别? – 2014-10-10 07:22:54

+1

两个日期都是一样的。你忘了什么吗? – Jerodev 2014-10-10 07:23:37

+0

对不起,请立即检查 – 2014-10-10 07:24:45

回答

0

PHP 5

<?php 
// Set the default timezone 
date_default_timezone_set('UTC'); 


// Get Unix timestamp for a date 
// Reference: mktime(hour, minute, second, month, day, year) 
$time = mktime(04, 13, 24, 10, 10, 2014); 

// Alternatively (must be a valid English date format) 
$time = strtotime('2014-10-10 04:13:24'); 


// ISO 8601 date (added in PHP 5) 
$isodate = date('c', $time); 

echo $isodate; // 2014-10-10T04:13:24+00:00 


// RFC 2822 formatted date 
$rfcdate = date('r', $time); 

echo $rfcdate; // Fri, 10 Oct 2014 04:13:24 +0000 
?> 

参考文献:

+0

你可以使用'mkdate'或'gmmkdate'来做到这一点。我添加了一个例子。 – 2014-10-10 07:53:54

+0

为输入2014-10-10 04:13:24我得到这2014-10-10T06:13:24 + 02:00的结果。它是否正确? – 2014-10-10 08:38:38

+0

种。这是您当地时区格式正确的日期。如果你想要GMT/UTC日期,你必须使用'gmdate()'而不是'date()'。我改变它以适应您的需求。 – 2014-10-10 08:44:22

0

在PHP

在PHP中使用strptime()解析的时间,把它变成一个结构化的阵列。然后将结果传递给mktime()函数以获取UNIX时间戳。

在MySQL

使用UNIX_TIMESTAMP

SELECT UNIX_TIMESTAMP(datetime_column) FROM table; 
+0

不起作用,它不符合我在问题中提到的格式 – 2014-10-10 07:33:04

+0

错误:致电未定义的函数strptime() – 2014-10-10 08:05:47

1

你的输出是正确根据Sitemaps.org规范。 “2014-10-10T06:13:24+02:00”与“2014-10-10T04:13:24+00:00”的日期/时间相同。

了解更多关于Sitemaps.org使用的W3C Datetime encoding的信息。

另外,不要用日期函数解决这个问题,用字符串函数/操作解决这个问题:你在固定的位置修改字符串内的一个字节,然后你追加一个字符串:

$timestamp = "2014-10-10 04:13:24"; 
$timestamp[10] = "T"; 
$timestamp .= "+00:00"; 

echo $timestamp, "\n"; // 2014-10-10T04:13:24+00:00 

或者如果你想节省一些字节在文件中使用“Z”,而不是“+00:00”来表示时区:

$timestamp = "2014-10-10 04:13:24"; 
$timestamp[10] = "T"; 
$timestamp .= "Z"; 

echo $timestamp, "\n"; // 2014-10-10T04:13:24Z 
+0

为什么他们不应该用函数解决这个问题? – arielnmz 2014-10-10 12:35:23

+0

不与*日期函数*,因为它不是必需的。问题不是第一手日期问题,而只是一个字符串操作。然而,你应该用函数来解决这个问题,把例子包装在一个函数中,然后使用该函数。稍后,您可以轻松更改处理格式,例如所述优化以Z作为时区指示符。 – hakre 2014-10-10 12:48:48

+0

那么,如果日期已经是UTC,那么情况就是这样,而且OP也没有说是否。 +1,因为如果它是UTC,这不是时间本身的问题。 – arielnmz 2014-10-10 13:53:57

相关问题