【问题标题】:Strtotime range时间范围
【发布时间】:2017-12-13 20:05:42
【问题描述】:

晚上好, 我不得不承认我不是很了解 php。其实我是初学者 我需要以下代码的帮助。

此时,如果您以今天的 begin_valability 下订单,您会收到消息“最低可接受的开始日期_valability”是明天“并且没关系。

如果 begin_valability 值大于我希望无法下订单

2017 年 12 月 31 日。

提前谢谢你

#defined API * required


if (isset ($this -> _ params ['begin_valability'])) {
            
if ($this -> _ params ['begin_valability']! = null) {

#validate if begin_valability is valid
                
if ($this-> validateDate ($this -> _ params, 'Y-m-d') == false) {
                    WebApp_Mobile_Messages :: error ( '125');
                   return;
                }
                
                
$today = date("Y-m-d");
if ($today> = $this -> _ params ['begin_valability']) {
WebApp_Mobile_Messages :: error (0, "Minimum accepted start date_valability" . date("Y-m-d", strtotime("+1 day" )));
                    
return;
                }
             }   

【问题讨论】:

  • $this -> _ params ['begin_valability']的值是多少?
  • 2017-12-14这样的开始日期

标签: php datetime datepicker strtotime


【解决方案1】:

PHP DateTime 实例具有可比性。

可以通过多种方式将日期时间字符串转换为 DateTime 实例,其中将所述日期时间字符串作为参数传递以初始化新的 DateTime 对象。

$yearEnd = new DateTime('2017-12-31');

$beginValability = new DateTime($this->_params['begin_valability']);

下单前添加保护子句:

if ($beginValability > $yearEnd) return;

【讨论】:

    【解决方案2】:

    我会考虑将日期转换为DateTime objectsstrtotime integer values。这样就可以轻松比较两个不同的日期。

    例子:

    /* Defines before class definition */
    define('MIN_VALABILITY_DATE_INTERVAL', strtotime('+1 days')); /* 1 day interval (as int) */
    define('MAX_VALABILITY_DATE_STATIC', strtotime('2017-12-31')); /* Max specific date (as int) */
    define('MAX_VALABILITY_DATE_INTERVAL', strtotime('+10 days')); /* 10 day interval (as int) */
    
    /* ...function() */
    
        if(!empty($this->_params['begin_valability'])){
            if($this->validateDate($this->_params['begin_valability'], 'Y-m-d')){
                $begin_valability = strtotime($this->_params['begin_valability']);
                if($begin_valability >= MIN_VALABILITY_DATE_INTERVAL && $begin_valability <= MAX_VALABILITY_DATE_STATIC){
                    /* succsess - do something */
                }else /* date out of range */{
                    WebApp_Mobile_Messages::error('');
                }
            }else /* invalid date */{
                WebApp_Mobile_Messages::error('125');
            }
        }else /* begin_valability is empty */{
            WebApp_Mobile_Messages::error('');
        }
        return;
    
    /* function end */
    

    编辑: 显然没有必要使用这些定义,如果这些值不会在其他地方被引用,那么使用局部变量可能会更好。 p>

    【讨论】:

    • 明天我会测试并反馈反馈
    猜你喜欢
    • 2012-10-19
    • 2020-01-18
    • 1970-01-01
    • 2017-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多