【问题标题】:Easiest way to get the unix time stamp for the date exactly 1 month back in php在php中获取恰好1个月的日期的unix时间戳的最简单方法
【发布时间】:2011-04-04 16:27:21
【问题描述】:

我想从当天开始正好 30 天后获取当天的 unix 时间戳。 最好的方法是什么?

我可以用它来获取 30 天前的日期吗,这是最好的方法吗?

$day = date('Y-m-d', strtotime('-30 days'));

google 搜索将我带到 php 中的 mktime() 函数。但是我如何将两者结合起来并获得当天的 unix 时间戳?什么是最简单最快的方法?

【问题讨论】:

  • strtotime('-30 days') 应该已经给你那天的unix时间戳
  • “正好 1 个月前”和“正好 30 天前”根本不是一回事!您还需要考虑夏令时转换...您实际上对 30 * 24 小时前感兴趣?
  • 我对 1 个月前感兴趣。
  • 其实一天或两天的差异并没有太大的区别。我想要这个用于 api 调用,所以我从那个日期获得统计数据,我想要的是从给定日期(大约)开始的最后 1 个月的统计数据。
  • 对于 1 日至 28 日之间的任何日期以及 28 日至 31 日之间的任何日期,他必须做出定义。我通常将 28 日至 31 日定义为当前日期 +/- 1 个月是下个月/上个月,如果该月的天数比当前天多,那么您取当天,如果下个月的天数少于当前天天,然后我会占用该月的最大天数。

标签: php date unix-timestamp


【解决方案1】:

您只需要使用strtotime("-1 month"); 函数。这将返回一个 UNIX 时间戳。

【讨论】:

  • 哈哈,那是行不通的!!尝试日期(“Y-m-d”,strtotime(“2011-03-31 -1 月”));应该给你上个月的最后一天,但你得到的是“2011-03-02”!
  • echo "<?php echo date("r", strtotime('-1 month'));" | php 得到我Fri, 04 Mar 2011 17:35:43 +0000
【解决方案2】:
$date = date_create();
date_sub($date, date_interval_create_from_date_string('1 m'));
echo date_format($date, 'U');

【讨论】:

  • 您也可以将第一个参数作为mktime() 的输出提供给date_create(),以演示任意日期:)
【解决方案3】:

How to get previous month and year relative to today, using strtotime and date? 看这个问题。有关于有趣的strtotime("-1 month"); 错误的讨论。

【讨论】:

  • 这不是错误。这是预期的行为,因为它使用的是gnu.org/software/tar/manual/html_node/…
  • 其实我不希望-1 个月停留在同一个月!他们可能在某个地方“注意到”了它,但这并不意味着它应该是正确的。
猜你喜欢
  • 2017-03-06
  • 2011-02-07
  • 2011-01-31
  • 2010-10-30
  • 1970-01-01
  • 2019-06-10
  • 1970-01-01
  • 1970-01-01
  • 2012-03-17
相关资源
最近更新 更多