从一周后的星期几获取周数

时间:2016-01-19 15:31:02

标签: php date

尝试从PHP中的给定日期获取周数。出于某种原因,我尝试的各种事情似乎都是休息一周。

查看以下链接,我们应该在第3周 http://www.epochconverter.com/date-and-time/weeknumbers-by-year.php

然而,当我做以下情况时,我得到第2周

public class EventHub 
{
    private readonly ISubject<object, object> _messages;
    public EventHub()
    {
        var _subject = new Subject<object>();
        m_messages = Subject.Synchronize(_subject);
    }

    public void Publish<T>(T message)
    {
        m_messages.OnNext(message);
    }

    public IObservable<T> AsObservable<T>()
    {
        return m_messages
            .ObserveOn(ThreadPoolScheduler.Instance)
            .OfType<T>()
            .Synchronize()
            .AsObservable();
    }
}

我也尝试过这段代码获得相同的结果,第2周

echo "Weeknummer: " . date("W", strtotime("2016-01-17"));

任何想法为什么它似乎落后一周以及如何解决这个问题?

由于

3 个答案:

答案 0 :(得分:2)

我们是,但今天是第19位(至少在我的时区......)。

您已在脚本中对第17个进行了硬编码,正如您在网站上看到的那样,这是第2周的最后一天。

答案 1 :(得分:1)

您发送的链接显示2016-01-17是第2周。请参阅屏幕截图。在PHP中,周从星期一开始(你可以阅读更多in the docs

enter image description here

答案 2 :(得分:0)

这是因为在mktime()中,它是这样的:

mktime(hour, minute, second, month, day, year);

所以尝试下面的代码希望它是你想要的

<?php
$ddate = "2016-01-17";
$duedt = explode("-", $ddate);
$date  = mktime(0, 0, 0, $duedt[1], $duedt[2], $duedt[0]);
$week  = (int)date('W', $date);
echo "Weeknummer: " . $week;
?>

您也可以尝试使用github.com/briannesbitt/Carbon来最大化您在日期操作方面的技能。对于碳,您可以通过以下方式实现:

Carbon::createFromFormat('Y-m-d H', '2012-10-18')->format('W');