【问题标题】:How can I get the timestamp for a given day of week?如何获取一周中给定日期的时间戳?
【发布时间】:2011-02-24 09:02:00
【问题描述】:

基本上,我需要将当前/未来的工作日转换为时间戳。

例子:

today     = Thu, 24 Feb 2010
weekday   = Tue
next date = Tue,  1 Mar 2010
cur stamp = 1267016400
new stamp = 1267448400

【问题讨论】:

    标签: php timestamp weekday


    【解决方案1】:

    strtotime('Tue') 将返回下周二的时间戳。

    strtotime('Tue', $time) 将从给定的时间戳返回下周二的时间戳。

    【讨论】:

    • 嗯...(呃!)不知道我怎么错过了!
    【解决方案2】:

    这是我最终得到的代码:

    /**
     * @param $weekday string The weekday in short (3 letter) format, eg: "Mon" or "Tue".
     * @return integer The calculated timestamp.
     */
    function next_weekday_to_stamp($weekday,$today=null){
        if(!$today)$today=time();
        $range = array('Mon','Tue','Wed','Thu','Fri','Sat','Sun','Mon','Tue','Wed','Thu','Fri','Sat','Sun');
        $days = array_search(date('D'), $range);
        $range = array_slice($range, $days);
        $days = array_search($weekday, $range);
        return strtotime('+'.$days.' days', $today);
    }
    

    谈论过度设计!

    无论如何,如果有人想在过去(上个工作日)使用它,它可以很容易地适应。

    【讨论】:

    • 正如 Lacking Ideas 指出的那样,'strtotime("Tue")' 应该做你想做的事 - 今天(如果当前是星期二)或下周二(如果是一周中的任何其他日子)返回)
    【解决方案3】:

    你试过了吗

    strtotime("+7 days", strtotime("Thu, 24 Feb 2010"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-30
      • 2013-06-21
      • 1970-01-01
      • 1970-01-01
      • 2019-12-29
      • 2021-12-31
      相关资源
      最近更新 更多