123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205 |
- <?php
- class DateController
- {
- private static $weekday = array("", "Mo", "Di", "Mi", "Do", "Fr", "Sa", "So");
- private static $yesNo = array(false => "N", true => "J");
- private static $stringVars = array(
- "jahr" => "Year",
- "quartal" => "Quarter",
- "monat" => "Month",
- "tag" => "Day",
- "datum" => "Today",
- "zeit" => "TimeHm",
- "wochedesmonats" => "WeekOfMonth",
- "wochentag" => "Weekday",
- "tagdesjahres" => "DayOfYear",
- "ymd" => "FullDate",
- "vortag" => "FullDateYesterday"
- );
- private static $boolVars = array(
- "mo-fr" => "MoFr",
- "mo-sa" => "MoSa",
- "mo-so" => "MoSo",
- "di-sa" => "DiSa",
- "di-so" => "DiSo",
- "ersterwerktag" => "IsFirstWeekdayOfMonth",
- "ungeradewoche" => "OddWeek"
- );
- public static function Run ($argv)
- {
- $date = (count($argv) > 1) ? $argv[1] : "";
- $dateCtrl = new DateController($date);
- echo $dateCtrl->GetVariables();
- }
- private $timestamp;
- public function __construct ($date = "")
- {
- $this->timestamp = ($date == "") ? time() : strtotime($date);
- }
- public function GetVariables ()
- {
- $result = "Jahr=" . $this->Year() . "\r\n";
- $result .= "Quartal=" . $this->Quarter() . "\r\n";
- $result .= "Monat=" . $this->Month() . "\r\n";
- $result .= "Tag=" . $this->Day() . "\r\n";
- $result .= "Zeit=" . $this->TimeHm() . "\r\n";
- $result .= "WocheDesMonats=" . $this->WeekOfMonth() . "\r\n";
- $result .= "Wochentag=" . $this->Weekday() . "\r\n";
- $result .= "Mo-Fr=" . DateController::$yesNo[$this->MoFr()] . "\r\n";
- $result .= "Mo-Sa=" . DateController::$yesNo[$this->MoSa()] . "\r\n";
- $result .= "Mo-So=" . DateController::$yesNo[$this->MoSo()] . "\r\n";
- $result .= "Di-Sa=" . DateController::$yesNo[$this->DiSa()] . "\r\n";
- $result .= "Di-So=" . DateController::$yesNo[$this->DiSo()] . "\r\n";
- $result .= "ErsterWerktag=" . DateController::$yesNo[$this->IsFirstWeekdayOfMonth()] . "\r\n";
- $result .= "TagDesJahres=" . $this->DayOfYear() . "\r\n";
- $result .= "UngeradeWoche=" . DateController::$yesNo[$this->OddWeek()] . "\r\n";
-
- $result .= "datum=" . $this->Today() . "\r\n";
- $result .= "ymd=" . $this->FullDate() . "\r\n";
- $result .= "Vortag=" . $this->FullDateYesterday() . "\r\n";
- return $result;
- }
- public function GetValue ($key)
- {
- $key = trim(strtolower($key));
- if (isset(DateController::$stringVars[$key])) {
- return call_user_func(array($this, DateController::$stringVars[$key]));
- }
- if (isset(DateController::$boolVars[$key])) {
- return DateController::$yesNo[call_user_func(array($this, DateController::$boolVars[$key]))];
- }
- return "?";
- }
- public function Today ()
- {
- return date("d.m.Y", $this->timestamp);
- }
-
- public function FullDate ()
- {
- return date("Y-m-d", $this->timestamp);
- }
- public function FullDateYesterday ()
- {
- $yesterday = strtotime("-1 day", $this->timestamp);
- return date("Y-m-d", $yesterday);
- }
-
- public function Year ()
- {
- return date("Y", $this->timestamp);
- }
- public function Quarter ()
- {
- $month = $this->Month();
- if ($month <= "03") return "1";
- if ($month <= "06") return "2";
- if ($month <= "09") return "3";
- return "4";
- }
- public function Month ()
- {
- return date("m", $this->timestamp);
- }
- public function Day ()
- {
- return date("d", $this->timestamp);
- }
-
- public function TimeHm ()
- {
- return date("H:i", $this->timestamp);
- }
- public function Week ()
- {
- return date("W", $this->timestamp);
- }
- public function WeekOfMonth ()
- {
- $weekdayOfFirst = $this->WeekdayOfFirst();
- $weekOffset = ($weekdayOfFirst > 1 && $weekdayOfFirst < 6) ? 1 : 0;
- $offset = 7 - date("N", $this->timestamp);
- return floor((date("j", $this->timestamp) + $offset) / 7) + $weekOffset;
- }
- private function WeekdayOfFirst ()
- {
- return date("N", strtotime($this->Year()."-".$this->Month()."-01"));
- }
- public function Weekday ()
- {
- return DateController::$weekday[date("N", $this->timestamp)];
- }
- public function MoFr ()
- {
- return date("N", $this->timestamp) < 6;
- }
- public function MoSa ()
- {
- return date("N", $this->timestamp) != 7;
- }
- public function MoSo ()
- {
- return true;
- }
-
- public function DiSa ()
- {
- return date("N", $this->timestamp) != 1 && date("N", $this->timestamp) != 7;
- }
-
- public function DiSo ()
- {
- return date("N", $this->timestamp) != 1;
- }
- public function FirstWeekdayOfMonth ()
- {
- $weekdayOfFirst = $this->WeekdayOfFirst();
- if ($weekdayOfFirst == 6) return "03";
- if ($weekdayOfFirst == 7) return "02";
- return "01";
- }
- public function IsFirstWeekdayOfMonth ()
- {
- return $this->FirstWeekdayOfMonth() == $this->Day();
- }
- public function DayOfYear ()
- {
- return date("z", $this->timestamp) + 1;
- }
- public function OddWeek ()
- {
- return ($this->Week() % 2) == 1;
- }
- }
|