Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /*
- * File Location:
- * /custom/include/Expressions/Expression/Date/psi_SubDateExpression.php
- */
- require_once('include/Expressions/Expression/Date/DateExpression.php');
- /**
- * <b>psi_subDate($date1, $date2)</b><br>
- * Returns an absolute value integer of the number of days between <em>$date1</em> and <em>$date2</em>
- * ex: <em>psi_subDate(date("1/1/2010"), date("1/5/2010"))</em> = "4"
- **/
- class psi_SubDateExpression extends DateExpression{
- static function getOperationName() {
- return "psi_subDays";
- }
- static function getParameterTypes() {
- return array("date", "date");
- }
- static function getParamCount() {
- return 2;
- }
- function toString() {
- }
- function evaluate() {
- $params = $this->getParameters();
- $date1 = DateExpression::parse($params[0]->evaluate());
- $date2 = DateExpression::parse($params[1]->evaluate());
- if(!$date1) {
- return false;
- }
- if(!$date2){
- return false;
- }
- $date1_string = $date1->format('U');
- $date2_string = $date2->format('U');
- $diff = $date1_string - $date2_string;
- $diff = abs($diff);
- if(is_int($diff)){
- $seconds = $diff;
- $minutes = $diff/60;
- $hours = $minutes/60;
- $days = $hours/24;
- return $days;
- } else {
- return false;
- }
- }
- static function getJSEvaluate() {
- return <<<EOQ
- var params = this.getParameters();
- var date1 = SUGAR.util.DateUtils.parse(params[0].evaluate(), 'user');
- var date2 = SUGAR.util.DateUtils.parse(params[1].evaluate(), 'user');
- /*
- * heavily derived from this SO posting...
- * http://stackoverflow.com/a/12004010
- * -- Matt Poer
- */
- var datediff = date1.getTime() - date2.getTime(); //store the getTime diff - or +
- return (datediff / (24*60*60*1000)); //Convert values to -/+ days and return value
- EOQ;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement