fantasy-time-crunch
I needed a way of handling a made-up time system in a game, so I made this.
Sample Configuration
const time = // One and only one unit is the smallest measured subdivision of time, defined as a 'tick' second: tick: true makes: minute: 60 // Larger units are defined by how many of a smaller unit they are subdivided into minute: makes: hour: 60 // Optionally one can define a function to be called when // a unit increments (having a bell toll, etc.) hour: makes: day: 24 { console; console; } // Units can be divided into multiple state changes. For example, a day has two or more states defined // by how many hours have passed. // 'states' can be an object or a function. // In this case, dawn and dusk are different depending // on the season { if thisstates return day: 9 // 0900 -- by default this number represents hours. however, each property returned can also be a function that has access to any time unit. night: 20 // 2000 ; return day: 6 // 0900 night: 23 // 2200 ; } day: { const days = thistimemonth % 2 ? 31 : 30; return month: days; } { const names = 'MTWHFSU'; console; } month: // The 'of' property can also be a function called // In this case, even months have 30 days and odd have 31. makes: year: 12 // For simpler state changes, an object marking the // transitional thresholds is fine. states: winter: 11 spring: 3 summer: 5 fall: 9 ;