Available on php
See also:
https://www.php.net/manual/en/class.datetimeimmutable.php
@:phpClassConststaticfinalread onlyATOM:Int
@:phpClassConststaticfinalread onlyCOOKIE:Int
@:phpClassConststaticfinalread onlyISO8601:Int
@:phpClassConststaticfinalread onlyRFC1036:Int
@:phpClassConststaticfinalread onlyRFC1123:Int
@:phpClassConststaticfinalread onlyRFC2822:Int
@:phpClassConststaticfinalread onlyRFC3339:Int
@:phpClassConststaticfinalread onlyRFC3339_EXTENDED:Int
@:phpClassConststaticfinalread onlyRFC7231:Int
@:phpClassConststaticfinalread onlyRFC822:Int
@:phpClassConststaticfinalread onlyRFC850:Int
@:phpClassConststaticfinalread onlyRSS:Int
@:phpClassConststaticfinalread onlyW3C:Int
@:phpMagicstatic__set_state(array:NativeAssocArray<Any>):DateTimeImmutable
staticcreateFromFormat(format:String, datetime:String, ?timezone:DateTimeZone):EitherType<DateTimeImmutable, Bool>
staticcreateFromMutable(object:DateTime):DateTimeImmutable
staticgetLastErrors():NativeAssocArray<Dynamic>
@:value({ datetime : "now" })new(datetime:String = "now", ?timezone:DateTimeZone)
@:phpMagic__wakeup():Void
add(interval:DateInterval):EitherType<DateTimeImmutable, Bool>
@:value({ absolute : false })diff(targetObject:DateTimeInterface, absolute:Bool = false):EitherType<DateInterval, Bool>
format(format:String):EitherType<String, Bool>
getOffset():EitherType<Int, Bool>
getTimestamp():Int
getTimezone():EitherType<DateTimeZone, Bool>
modify(modifier:String):EitherType<DateTimeImmutable, Bool>
setDate(year:Int, month:Int, day:Int):EitherType<DateTimeImmutable, Bool>
@:value({ dayOfWeek : 1 })setISODate(year:Int, week:Int, dayOfWeek:Int = 1):EitherType<DateTimeImmutable, Bool>
@:value({ microsecond : 0, second : 0 })setTime(hour:Int, minute:Int, second:Int = 0, microsecond:Int = 0):EitherType<DateTimeImmutable, Bool>
setTimestamp(timestamp:Int):EitherType<DateTimeImmutable, Bool>
setTimezone(timezone:DateTimeZone):EitherType<DateTimeImmutable, Bool>
sub(interval:DateInterval):EitherType<DateTimeImmutable, Bool>