now = Carbon::now()->startOfDay();
} else {
$this->now = $setNow;
}
$this->year = $this->now->year;
# detect if next time change is next year
if ( $this->now->gt( Carbon::parse('last sunday of october')->startOfDay() ) ){
$this->year = $this->year+1;
}
$this->tc_march = Carbon::parse('last sunday of march ' . $this->year )->startOfDay();
$this->tc_oct = Carbon::parse('last sunday of october ' . $this->year)->startOfDay();
if ( $this->now->lte($this->tc_march) ){
# next time change is in march this year, (last sunday in march)
$this->date = $this->tc_march;
$this->description = 'Die Uhr wird von 2 Uhr auf 3 Uhr vorgestellt, sodass wir 1 Stunde weniger schlafen.';
$this->descriptionHTML = 'Die Uhr wird von 2 Uhr auf 3 Uhr vorgestellt, sodass wir 1 Stunde weniger schlafen.';
# detect if last time change was last year
if ( $this->now->lt( Carbon::parse('last sunday of march ') ) ) {
#$this->year = $this->now->year - 1;
$year = $this->now->year - 1;
$this->daysago = Carbon::parse('last sunday of october' . $year)->diffInDays( $this->now );
} else {
$this->daysago = $this->tc_oct->diffInDays( $this->now );
}
} else {
# next time change is in october this year, (last sunday in october)
$this->date = $this->tc_oct;
$this->description = 'Die Uhr wird von 3 Uhr auf 2 Uhr zurückgestellt, sodass wir 1 Stunde länger schlafen.';
$this->descriptionHTML = 'Die Uhr wird von 3 Uhr auf 2 Uhr zurückgestellt, sodass wir 1 Stunde länger schlafen.';
$this->daysago = $this->tc_march->diffInDays( $this->now );
}
$this->dateText = $this->date->toDateString();
$this->daysuntil = $this->date->diffInDays($this->now);
$this->day = $this->date->day;
$this->month = $this->date->month;
$this->year = $this->date->year;
if ( 3 == $this->month ) {
$this->monthText = "März";
} else {
$this->monthText = "Oktober";
}
}
/**
* Returns an instance of the object with the next time change after the current one.
*/
function next(){
return new Zeitumstellung( $this->date->add(1, 'day') );
}
public function getData(){
$result = array();
$result["date"] = $this->date->toDateString();
$result["day"] = $this->date->day;
$result["month"] = $this->date->month;
$result["monthText"] = $this->monthText;
$result["year"] = $this->date->year;
$result["daysuntil"] = $this->daysuntil;
$result["daysago"] = $this->daysago;
$result["now"] = $this->now->toDateString();
return $result;
}
public function getJSON(){
return json_encode( $this->getData() );
}
}