X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/timetracker.git/blobdiff_plain/098a79f0819ebb89b7d48df4a6b154af4560f68e..9a23a8c0a51b7ec38a96f525484134f3cb85dc7e:/WEB-INF/lib/Period.class.php diff --git a/WEB-INF/lib/Period.class.php b/WEB-INF/lib/Period.class.php new file mode 100644 index 00000000..1880cf15 --- /dev/null +++ b/WEB-INF/lib/Period.class.php @@ -0,0 +1,148 @@ +week_start; + + $date_begin = new DateAndTime(); + $date_begin->setFormat($date_point->getFormat()); + $date_end = new DateAndTime(); + $date_end->setFormat($date_point->getFormat()); + $t_arr = localtime($date_point->getTimestamp()); + $t_arr[5] = $t_arr[5] + 1900; + + if ($t_arr[6] < $startWeek) { + $startWeekBias = $startWeek - 7; + } else { + $startWeekBias = $startWeek; + } + + switch ($period_name) { + case INTERVAL_THIS_DAY: + $date_begin->setTimestamp($date_point->getTimestamp()); + $date_end->setTimestamp($date_point->getTimestamp()); + break; + case INTERVAL_THIS_WEEK: + $date_begin->setTimestamp(mktime(0,0,0,$t_arr[4]+1,$t_arr[3]-$t_arr[6]+$startWeekBias,$t_arr[5])); + $date_end->setTimestamp(mktime(0,0,0,$t_arr[4]+1,$t_arr[3]-$t_arr[6]+6+$startWeekBias,$t_arr[5])); + break; + case INTERVAL_LAST_WEEK: + $date_begin->setTimestamp(mktime(0,0,0,$t_arr[4]+1,$t_arr[3]-$t_arr[6]-7+$startWeekBias,$t_arr[5])); + $date_end->setTimestamp(mktime(0,0,0,$t_arr[4]+1,$t_arr[3]-$t_arr[6]-1+$startWeekBias,$t_arr[5])); + break; + case INTERVAL_THIS_MONTH: + $date_begin->setTimestamp(mktime(0,0,0,$t_arr[4]+1,1,$t_arr[5])); + $date_end->setTimestamp(mktime(0,0,0,$t_arr[4]+2,0,$t_arr[5])); + break; + case INTERVAL_LAST_MONTH: + $date_begin->setTimestamp(mktime(0,0,0,$t_arr[4],1,$t_arr[5])); + $date_end->setTimestamp(mktime(0,0,0,$t_arr[4]+1,0,$t_arr[5])); + break; + + case INTERVAL_THIS_YEAR: + $date_begin->setTimestamp(mktime(0, 0, 0, 1, 1, $t_arr[5])); + $date_end->setTimestamp(mktime(0, 0, 0, 12, 31, $t_arr[5])); + break; + } + $this->mBeginDate = &$date_begin; + $this->mEndDate = &$date_end; + } + + /** + * Return all days by period + * + * @return array + */ + function getAllDays() { + $ret_array = array(); + if ($this->mBeginDate->before($this->mEndDate)) { + $d = $this->getBegin(); + while ($d->before($this->getEnd())) { + array_push($ret_array, $d); + $d = $d->nextDate(); + } + array_push($ret_array, $d); + } else { + array_push($ret_array, $this->mBeginDate); + } + return $ret_array; + } + + function setPeriod($b_date, $e_date) { + $this->mBeginDate = $b_date; + $this->mEndDate = $e_date; + } + + // return date object + function getBegin() { + return $this->mBeginDate; + } + + // return date object + function getEnd() { + return $this->mEndDate; + } + + // return date string + function getBeginDate($format="") { + return $this->mBeginDate->toString($format); + } + + // return date string + function getEndDate($format="") { + return $this->mEndDate->toString($format); + } + + function getArray($format="") { + $result = array(); + $d = $this->getBegin(); + while ($d->before($this->getEnd())) { + $result[] = $d->toString($format); + $d = $d->nextDate(); + } + return $result; + } +} +?> \ No newline at end of file