Time unit constructors for the Symmetry454 calendar system. These units can be
used with linear_time() to create custom time representations.
Details
The Symmetry454 calendar (Sym454) is a perennial solar calendar proposed by Dr. Irv Bromberg. It preserves the traditional 12-month structure and 7-day week, with months arranged in a symmetrical 4-5-4 week pattern per quarter. Every month starts on Monday and has a whole number of weeks, meaning no month ever contains a partial week.
The following time units are available in the Symmetry454 calendar (cal_sym454$).
year(): Year unitmonth(): Month unitweek(): Week unitday(): Day unithour(): Hour unitminute(): Minute unitsecond(): Second unitmillisecond(): Millisecond unit
Leap years
Rather than intercalary days, Symmetry454 uses a leap week appended to
December once every 5 or 6 years, making December a 5-week month in leap
years. A year is a leap year if (52 * year + 146) %% 293 < 52.
This yields a mean year of 365 + 71/293 days (≈ 365 days, 5 hours, 48 minutes, 56.5 seconds), intentionally slightly shorter than the mean northward equinoctial year.
See also
linear_time() for creating linear time points, and
https://en.wikipedia.org/wiki/Symmetry454 for more calendar details.
Examples
# Create a custom time representation using Symmetry454 units
linear_time(
Sys.time(),
chronon = cal_sym454$week(1L)
)
#> <mixtime[1]>
#> [1] 2026-Apr-W2