Browse project documentation

API reference

Daynumv1.0.0-beta.4View sourceEnglish / Persian

Find public entry points, argument defaults and return types.

The tables group related methods. Full declarations live in CivilDateTime, CalendarView and AbstractCalendarView. Names use the Eram\Daynum namespace unless noted. See errors for failure types.

CivilDateTime

APIArguments / result
__constructint $jdn, int $secondsOfDay = 0, ?string $tzLabel = null
fromGregorian, fromJalali, fromHijri, fromHijriCivilint $year, int $month, int $day, int $hour = 0, int $minute = 0, int $second = 0, ?string $tzLabel = null → CivilDateTime
tryFromGregorian, tryFromJalali, tryFromHijri, tryFromHijriCivilSame arguments → ?CivilDateTime
isValidGregorian, isValidJalali, isValidHijri, isValidHijriCivilint $year, int $month, int $day → bool; date only
fromDateTimeDateTimeInterface $dt → CivilDateTime
fromTimestampint $timestamp, string $tzLabel = 'UTC' → CivilDateTime
now, today, tomorrow, yesterday?string $tzLabel = null → CivilDateTime; null uses/stores PHP default
fromArrayarray $data → CivilDateTime; inverse of jsonSerialize()
gregorian, jalali, hijri, hijriCivilNo arguments → corresponding concrete view
jsonSerializeNo arguments → array with jdn, secondsOfDay, tzLabel
toDateTimeImmutable, toTimestampNo arguments → DateTimeImmutable / int
withJdn, withTzLabelint $jdn / ?string $tzLabel → CivilDateTime
withTimeint $hour, int $minute, int $second → CivilDateTime
addSeconds, subSeconds, addMinutes, subMinutes, addHours, subHours, addDays, subDays, addWeeks, subWeeksRequired integer amount → CivilDateTime; wall-clock shifts
startOfDay, endOfDayNo arguments → CivilDateTime
equals, lessThan, greaterThan, lessThanOrEqual, greaterThanOrEqual, isSameDayCivilDateTime $other → bool
diffInDays, diffInSeconds, diffInMinutes, diffInHoursCivilDateTime $other → signed int
static compareCivilDateTime $a, CivilDateTime $b → int
static min, maxCivilDateTime $first, CivilDateTime ...$rest → CivilDateTime
betweenCivilDateTime $a, CivilDateTime $b, bool $inclusive = true → bool

jdn, secondsOfDay, tzLabel are public readonly properties. All core comparisons ignore labels. See concepts and timezones.

Calendar views

Concrete classes: Calendar\Gregorian\GregorianView, Calendar\Jalali\JalaliView, Calendar\Hijri\HijriUmmAlQuraView, Calendar\Hijri\HijriCivilView.

APIArguments / result
static ofCivilDateTime $dateTime, ?string $locale = null, string $digitScript = 'latn' → same view type; null locale means en
static parseExact, tryParseExactstring $text, string $format, ?string $tzLabel = null, ?string $locale = null → CivilDateTime / ?CivilDateTime
dateTime, calendarNo arguments → CivilDateTime / Calendar
year, month, day, hour, minute, secondNo arguments → int
dayOfWeek, dayOfWeekIso, dayOfYear, weekOfYear, weekBasedYear, daysInMonth, daysInYear, quarterNo arguments → int
isLeapYear, isWeekend, isWeekday, isInSupportedRangeNo arguments → bool
weekDayNo arguments → WeekDay
format, __toStringstring $pattern / no arguments → string
withLocale, withDigitsstring $locale / string $script → same view type
toArrayNo arguments → named calendar components; see serialization
addDays, subDays, addMonths, subMonths, addYears, subYearsRequired integer amount → CivilDateTime
withNullable integer year, month, day, hour, minute, second, each default null → CivilDateTime
startOfMonth, endOfMonth, startOfYear, endOfYear, startOfQuarter, endOfQuarterNo arguments → CivilDateTime; time preserved
startOfWeek, endOfWeekWeekDay|int|null $weekStart = null → CivilDateTime; null uses locale
diffInMonths, diffInYearsCivilDateTime $other → signed int
diffForHumans, agoCivilDateTime $other / no arguments → string
Jalali only: season, seasonNameNo arguments → Season / string

Calendar

All four implementations expose static instance(). Calendar maps date components to JDN, without time or zone:

MethodResult
toJdn(int $year, int $month, int $day)int, validates date
fromJdn(int $jdn)[year, month, day]
isLeapYear(int $year), supportsYear(int $year)bool
daysInMonth(int $year, int $month), monthsInYear(int $year)int
dayOfYear(int $year, int $month, int $day)int, one-based; prevalidate input
name(), localeFamily()string
supportedRange()[minJdn, maxJdn], inclusive

Use the factories for validated construction. Low-level reverse conversion does not uniformly reject every unsupported year. See calendar ranges.

Enums

WeekDay: Monday=1, Tuesday=2, Wednesday=3, Thursday=4, Friday=5, Saturday=6, Sunday=7. Season: Spring=1, Summer=2, Autumn=3, Winter=4. Both are integer-backed enums.

LocaleRegistry and LocaleData

Under Eram\Daynum\Locale, static LocaleRegistry::get(string $tag): LocaleData, register(string $tag, LocaleData $locale): void, has(string $tag): bool, tags(): array and normalize(string $tag): string manage process-wide locales. normalize() only normalizes text; get()/register() validate tags.

LocaleData requires tag(), monthName()/monthNameShort() (family and month), weekdayName()/weekdayNameShort() (Sunday=0), meridiem(bool $isPm, bool $uppercase), ordinalSuffix(int $day), firstDayOfWeek(): WeekDay, weekendDays(): array, relativeTime(int $value, string $unit, bool $future), relativeTimeNow() and seasonName(Season $season). Name/phrase methods return strings. See the interface and custom locale example.

DigitTransliterator

Eram\Daynum\Formatter\DigitTransliterator has constants LATN = 'latn', PERSIAN = 'persian', ARAB = 'arab' and static toLatin(string $text): string, toScript(string $text, string $script): string, isSupported(string $script): bool. Non-digit characters remain unchanged. Both view withDigits() and toScript() reject an unrecognized script with Daynum’s InvalidArgumentException. toScript() maps ASCII digits only; call toLatin() first when converting between Persian and Arabic-Indic digits.

Search documentation

Search across all projects. Close this window to return to your guide.

Tab to navigate · Enter to openEsc to close