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

发布于 2024-11-10 12:26:53 字数 266 浏览 4 评论 0原文

嘿伙计们, 如何计算自 Twitter 在其 API 中输出的日期以来过去的天数 例如:

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

至 XXX

我们可以使用 strtotime

谢谢大家, 右旋糖酐

Hey guys,
how does one calculate the days past since a date like the one Twitter outputs in its API
eg:

Mon Jul 12 00:27:26 +0000 2010

to XXX

Can we do it with strtotime

Thanks guys,
Dex

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

泡沫很甜 2024-11-17 12:26:54

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

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

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

321.85475694444

查看 strtotime(),<一个href="http://php.net/manual/en/function.time.php" rel="nofollow">time()date()

希望这对您有帮助。

You can do it like that (where $your_date is the string you mentioned):

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

In your case, when I did echo $diff; the output was (at the time I posted the answer):

321.85475694444

See more details for strtotime(), time() and date().

Hope this helped you.

层林尽染 2024-11-17 12:26:53

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

如果日期格式不变,您可以反转该过程(即反转时间戳 -> 字符串(在 Twitter 服务器上)到时间戳)使用精确的日期格式。使用 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('dmY H:i:s', $unix_timestamp) 相差两个小时,机器时区是 GMT+2。

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

echo ($unix_timestamp1 - $unix_timestamp2) / 86400;

如果您有两个这样的日期,则可以按照注释中的建议使用 DateTime::diff泽尔克拉特斯。您已使用 DateTime::createFromFormat 创建了两个 DateTime 实例,并使用传递的两个参数(之前创建的 DateTime 实例)调用 DateTime::diff。返回的 DateInterval 实例有一个 d 属性,其中包含天数差异。
另一种方法是使用 getTimestamp 方法,根据前面的示例进行数学计算。

参考资料:

Compatibility note: works only for PHP >= 5.3.0

Providing that the date format does not change, you can reverse the process (i.e. reverse timestamp -> string (on Twitters servers) to timestamp) using the exact date format. Using the table on the manual page of 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;
?>

Beware: On my machine, date('d-m-Y H:i:s', $unix_timestamp) differs two hours, the machines timezone is GMT+2.

To calculate the difference between in days between two Unix timestamps, use math (a day has 86400 seconds):

echo ($unix_timestamp1 - $unix_timestamp2) / 86400;

If you've two such dates, you can use DateTime::diff as suggested in the comments by Zerocrates. You've create two DateTime instances using DateTime::createFromFormat and invoke the DateTime::diff with two arguments passed, previously created DateTime instances. The returned DateInterval instance has a d property which contains the difference in days.
The other way would be using the getTimestamp method, doing the maths from the previous example.

References:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文