【问题标题】:Get future timestamp of date and month without knowing the year在不知道年份的情况下获取日期和月份的未来时间戳
【发布时间】:2021-01-04 22:03:24
【问题描述】:

我有一个包含月份和日期的日期字符串:“January 20”

我需要将其转换为 PHP 中的时间戳,并且可以使用 strtotime 来执行此操作。问题是我总是想返回一个未来的时间戳。因此,如果今天是 2020 年 12 月 30 日,并且我有字符串“1 月 20 日”,我想返回 2021 年 1 月 20 日的时间戳,而不是 2020 年 1 月 20 日。

我想出了一些复杂的方法来做到这一点,例如转换为时间戳,然后确保时间戳>当前时间。如果不是,请添加一年并重新转换为时间戳。但似乎有一个最佳实践和简单的方法可以做到这一点。有什么建议吗?

谢谢,

提姆

【问题讨论】:

  • 为什么认为这不是最好的方法呢?听起来对我来说是最好的方式
  • 如果您希望 DateTime 可以处理像 next January 20 这样的相对日期格式,那么没有。这很烦人,但它是not something that the parser understands
  • 是的,我正在寻找类似“明年 1 月 20 日”的内容。我会比较时间戳并从那里调整,只是认为可能有一种更清洁的方法。谢谢!

标签: php


【解决方案1】:

我会尝试将当前时间戳与今年时间戳进行比较。它应该可以工作。

$str = 'January 20';
$now = time();
$thisYear = strtotime($str);
$nextYear = strtotime($str . ' + 1 year');

$futureDate = $thisYear < $now ? $nextYear : $thisYear;
// 2021-01-20 - for January 20
// 2022-01-01 - for January 01

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 2015-05-23
    • 1970-01-01
    • 2023-04-08
    • 2014-07-24
    • 2010-09-07
    • 2021-12-16
    相关资源
    最近更新 更多