I crafted a little bit and actually created a room script and a custom timezone.
For script devs and builders:
The script does listen to any script request to share the current time.
So if you’re interested take a look at this or the info below and hit me up and I send the script address.
INFO for Devs
// You would need to send a json formated timeRequest Object:
@serializable
class timeRequest {
/**
* A Unix timestamp in ms of the time that shall be converted.
* For the current time you can use `Date.now();`
*/
timestamp: i64 /*ms*/ = 0;
/**
* There are several supported formats but only the `json` format can be parsed as a PITDate object.
* Other supported formats are:
* Currently only 24h format is supported!
*
* "iso" : 2025-02-29T15:37
* "date" : 2025-02-29
* "dd.mm.yyyy" : 29.02.2025
* "mm.dd.yyyy" : 02.29.2025
* "dd.mm.yyyy hh:mm" : 29.02.2025 15:37
* "mm.dd.yyyy hh:mm" : 02.29.2025 15:37
* "longdate" : 29. February 2025
* "longdate3" : 29. Feb. 2025
* "longus" : February 29, 2025
* "longus3" : Feb. 29, 2025
* "longdatetime" : 29. February 2025 15:37
* "longdatetime3" : 29. Feb. 2025 15:37
* "longustime" : February 29, 2025 15:37
* "longustime3" : Feb. 29, 2025 15:37
* "compact" : 202502291537
* "json" : JSON fromated PITDate Object
* "full" : 2025-02-29 15:37
*
* @property {string} format
*/
format: string = 'json';
/**
* The type of leap year fix.
*
* This can be either `patched` or `aligned`.
* "date" : 2025-02-29
* **patched**
* Means that there will be 1 extra day in February each leap year which will cause an offset of 4h (in PIT 1h = 50min)
* This will be fixed by adding another leap day every 5th year. (so 2 extra days in Feb).
*
* **aligned**
* This will also add a leapday every leap year but to avoid the offsetthe leapday will be 4 PIT hours longer.
* When using this time please refer to it as Phantom Isles Aligned Time (PIAT).
*
* @property {string} type
*/
type: string = 'patched';
}
/* together with the `getTime` topic.
You will then recieve a JSON-formated `PITDate` object: */
@serializable
class PITDate {
/** Year (i16) */
year: i16 = 1970;
/** Month (i8; 1-12) */
month: i8 = 1;
/** Day (i8; 1-based) */
day: i8 = 1;
/** Hour (i8; 0-based) */
hour: i8 = 0;
/** Minute (i8; 0-based) */
minute: i8 = 0;
/** Original unix timestamp (i64, ms) */
timestamp: i64 = 0;
}
/* Example: */
const PIT_SCRIPT = 'PITScriptAdress'; /*Contact me if you want to use it.*/
function getPITTime(time: i64): PITDate|false {
/* !!!! To check if this is even used and how frequently I DO log requests and their scripts adresses. !!!! */
const req = Script.request(script,'getTime', `{"timestamp": ${now}, 'format': 'json', 'type': 'patched'}`);
if (req.is_error) {/* Do your Error handling here.*/ return false;} else {
return JSON.parse<PITDate>(req);
}
}
const now = Date.now();
const PIT = getPITTime(now);
/*Now do whatever you want with that time. ^w^*/
/*Signed: Felinex Gloomfort*/
For everyone else:
Here is a copy paste from the room description that runs the script:
Phantom Isles Time is a custom calendar system using the real-world Gregorian month names but with a unique structure and leap year rules. The year is made up of 12 months totaling 438 days. Each day has 24 hours of 50 minutes each (1,200 minutes per day). To stay in sync with the Earth’s actual year length, a “patched” leap day system is used.
More Info
Phantom Isles Time: Month Structure
Table
| Month |
Days |
| January |
37 |
| February |
35 |
| March |
37 |
| April |
36 |
| May |
37 |
| June |
36 |
| July |
37 |
| August |
37 |
| September |
36 |
| October |
37 |
| November |
36 |
| December |
37 |
| Total |
438 |
Leap Years in Phantom Isles Time (Patched Version)
- Regular year: 438 days.
- Most years that correspond to the real-world leap years: Add 1 extra day to December, making it a 439-day year.
- Every fifth leap year: Add 2 extra days to December, making it a 440-day year.
- Result: The system accumulates a small drift (4 hours, 40 minutes) per leap year, which is corrected every fifth leap year by adding an additional leap day.
This system ensures the calendar stays roughly aligned with Earth’s solar calendar over long periods, but with a uniquely structured year and leap pattern.
Why?
I saw this disussion about an “official” timezone but since everyone live in another timezone making one official would be an disatvantage to others.
That’s why I created PIT and its little time drift each day. This way we have a similar pace to the real world but for everyone it will be night or day at any time.
The extra days are needed to stay in sync to real life months and years.
Question?
Ask ahead!
P.S.: There is also a userscript that shows the time and lets you transform your local time to PIT/PIAT and PIAT/PIT to your local time on wolfery if someone is interested:
PIT/PIAT Userscript
EDIT: Userscript now also automatically converts PIT and PIAT time and replaces it on the site.