过去的文本日期到几天(自)PHP

Posted

技术标签:

【中文标题】过去的文本日期到几天(自)PHP【英文标题】:Past textual date to days (since) PHP 【发布时间】:2011-05-29 20:38:15 【问题描述】:

大家好, 一个人如何计算自 Twitter 在其 API 中输出的日期以来过去的天数 例如:

2010 年 7 月 12 日星期一 00:27:26 +0000

给XXX

我们可以用strtotime来做吗

谢谢各位, 敏捷

【问题讨论】:

试试这个:strptime 【参考方案1】:

兼容性说明:仅适用于 php >= 5.3.0

如果日期格式没有改变,您可以使用确切的日期格式反转过程(即反转时间戳 -> 字符串(在 Twitters 服务器上)到时间戳)。使用DateTime::createFromFormat手册页上的表格:

<?php
$str = 'Mon Jul 12 00:27:26 +0000 2010';
$oDateTime = DateTime::createFromFormat('D M d H:i:s T Y', $str);
$unix_timestamp = $oDateTime->getTimestamp();
echo $unix_timestamp;
?>

注意:在我的机器上,date('d-m-Y H:i:s', $unix_timestamp) 相差两个小时,机器时区是 GMT+2。

要计算两个 Unix 时间戳之间的天数差,请使用数学(一天有 86400 秒):

echo ($unix_timestamp1 - $unix_timestamp2) / 86400;

如果您有两个这样的日期,您可以按照 Zerocrates 在 cmets 中的建议使用 DateTime::diff。您已经使用 DateTime::createFromFormat 创建了两个 DateTime 实例,并使用之前创建的 DateTime 实例传递了两个参数来调用 DateTime::diff。返回的 DateInterval 实例有一个 d 属性,其中包含天数差异。 另一种方法是使用getTimestamp 方法,根据上一个示例进行数学运算。

参考资料:

http://php.net/manual/en/datetime.createfromformat.php http://php.net/manual/en/datetime.gettimestamp.php http://www.php.net/manual/en/datetime.diff.php http://www.php.net/manual/en/class.dateinterval.php

【讨论】:

由于这已经在创建一个 DateTime 对象,您不妨将DateTime::diff 与当前时间一起使用来获取 DateInterval 而不是获取时间戳。【参考方案2】:

你可以这样做($your_date 是你提到的字符串):

$diff = (time() - strtotime($your_date)) / (24*60*60);

在您的情况下,当我执行echo $diff; 时,输出是(在我发布答案时):

321.85475694444

查看strtotime()time()date() 的更多详细信息。

希望这对您有所帮助。

【讨论】:

【参考方案3】:

你可能会在这里找到某事:

performing datetime related operations in PHP

或者在php手册中有很多..

http://php.net/manual/en/function.date.php

【讨论】:

以上是关于过去的文本日期到几天(自)PHP的主要内容,如果未能解决你的问题,请参考以下文章

php输出星期几

在EXCEL中,今天到下个月今天的天数怎么计算,求教了

PHP:如何获取过去某个特定日期的上周日..?

如何在 php datepicker 中禁用过去的日期 [重复]

php获取本周开始日期和结束日期的方法

如何在excel中按名称和日期缩写