检查时间戳之间是否存在日期

发布于 2025-01-03 20:23:44 字数 287 浏览 0 评论 0原文

我试图弄清楚两个 UNIX 时间戳之间是否存在日期,无论年份如何。例如,假设我有日期 12 月 12 日,但不包含年份。我如何检查时间戳 1353369600 和 1358640000 之间是否存在 12 月 12 日(第一个时间戳等于 2012 年 11 月 20 日;第二个时间戳等于 2013 年 1 月 20 日)。我正在用 PHP 编写应用程序,但是如果您知道如何用其他语言执行此操作,请发表您的想法,以便我可以尝试完成逻辑。

提前致谢

更新:这就是答案! 使用 strtotime 并将第二个参数设置为开始时间戳:)

I am trying to figure out if a date exists between two unix timestamps regardless of year. For example, lets say I have the date December 12th, but does not contain the year. How would I check if December 12th exists between the timestamps of 1353369600 and 1358640000 (first timestamp equals Nov. 20th, 2012; second equals Jan. 20, 2013). I am programming the application in PHP, however if you know how to do this in a different language, please post your thoughts so I can try to work through the logic.

Thanks in advance

Update: here is the answer!
Use strtotime and set the second parameter to the beginning timestamp :)

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

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

发布评论

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

评论(2

森林散布 2025-01-10 20:23:44

只需使用strtotime将字符串转换为时间戳,然后进行比较即可。如果字符串不包含年份,则年份默认为当前年份。

$ts = strtotime("December 12th");
if ($ts >= 1353369600 && $ts <= 1358640000 ) {//....}

Just use strtotime to turn the string to timestamp and then compare. If the string don't contain year, then the year default is current year.

$ts = strtotime("December 12th");
if ($ts >= 1353369600 && $ts <= 1358640000 ) {//....}
魂ガ小子 2025-01-10 20:23:44

您可以每年检查时间戳之间的情况,看看它们之间是否有所需的日期。

function inBetween($day, $month, $from, $to)
{
    $from_year = date('Y', $from);
    $to_year = date('Y', $to);

    if($from_year == $to_year)
    {
        $time = mktime(12,0,0,$month,$day, $from_year);

        return $time > $from && $time < $to;
    }
    elseif($from_year < $to_year)
    {
        for($i=$from_year;$i<=$to_year;$i++)
        {
            $time = mktime(12,0,0,$month,$day, $i);
            if($time > $from && $time < $to) return TRUE;
        }
        return FALSE;
    }
}

var_dump(inBetween(12, 12, 1353369600, 1358640000));

You can check every year between the timestamps and see if there is the desired day in between them.

function inBetween($day, $month, $from, $to)
{
    $from_year = date('Y', $from);
    $to_year = date('Y', $to);

    if($from_year == $to_year)
    {
        $time = mktime(12,0,0,$month,$day, $from_year);

        return $time > $from && $time < $to;
    }
    elseif($from_year < $to_year)
    {
        for($i=$from_year;$i<=$to_year;$i++)
        {
            $time = mktime(12,0,0,$month,$day, $i);
            if($time > $from && $time < $to) return TRUE;
        }
        return FALSE;
    }
}

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