晚上好,我必须承认我对php不是很了解。事实上,我是一个初学者,我需要一些关于以下代码的帮助。
此时,如果您今天使用begin_valability下了订单,您会收到消息"Minimum accepted date_valability“is tomorrow”,这是OK。
如果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;
}
} 发布于 2017-12-14 04:19:06
PHP DateTime实例具有可比性。
日期时间串可以以各种方式转换为datetime实例,其中包括将所述日期时间串作为参数传递以初始化新的DateTime对象。
$yearEnd = new DateTime('2017-12-31');
$beginValability = new DateTime($this->_params['begin_valability']);下单前添加防护条款:
if ($beginValability > $yearEnd) return;发布于 2017-12-14 04:47:16
我会考虑将日期转换为DateTime objects或strtotime 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 */EDIT:显然没有必要使用这些定义,如果这些值不会在其他地方引用,那么使用局部变量可能会更好。
https://stackoverflow.com/questions/47801318
复制相似问题