sfttime — a hexadecimal time system based on fractional days
sfttime is an alternative representation of UTC time. For example,
2026-04-23 at 13:37 UTC (the start of sft day 5056) is written:
5056.000[sft]
Time is expressed as a hexadecimal count of days since the sfttime
epoch, with a fractional component for sub-day precision. It is very
regular, and timestamps are concise: a full timestamp with second-level
precision fits in 12 characters. It is also a good fit for shell
prompts and status lines, where only the sub-day part is needed —
that requires only five characters, for example the start of the
sfttime day (13:37 UTC) is .0000, and noon UTC is
.EEC0.
A full sfttime timestamp looks like:
DDDD.FFF[sft]
Where:
DDDDsfttime epoch. Grows by 1 each day..FFF1/4096 of a day, approximately 21 seconds (one vergil). Four
digits give a resolution of 1/65536 of a day, approximately 1.3 seconds
(one tick).[sft]sfttime. May be omitted in
contexts where it is unambiguous.The sub-day compact form omits the date entirely and is written as:
.F3C9
This is useful for timestamps where the date is known from context, such as log entries or status lines within a running session. Adding a fifth digit gives ~82ms precision (roughly 1/10 of a second), and a sixth digit gives millisecond-level precision (~5ms):
.F3C9A4
The sfttime epoch is , which is
49020 seconds after the Unix epoch (). The choice of
13:37 is intentional.
Each power of 16 in the fractional part has a name:
| Unit | Duration | Example | Name |
|---|---|---|---|
[sft]0 | 1 day | 1.0000[sft] | day |
[sft]-1 | 1.5 hours | .1000[sft] | major (one university lecture) |
[sft]-2 | ~5.6 minutes | .0100[sft] | schinken |
[sft]-3 | ~21 seconds | .0010[sft] | vergil |
[sft]-4 | ~1.3 seconds | .0001[sft] | tick |
Converting the current time:
$ sfttime
5055.F3C[sft]
A compact sub-day timestamp as used in status lines:
.F3C9
These timestamps represent the same moment expressed at different precisions:
| Timestamp | Precision |
|---|---|
5055[sft] | day (24h) |
5055.F[sft] | major (1.5h) |
5055.F3[sft] | schinken (~5.6min) |
5055.F3C[sft] | vergil (~21s) |
5055.F3C9[sft] | tick (~1.3s) |
To convert a sfttime timestamp to Unix time:
unix = hex_to_decimal(sfttime) * 86400 + 49020
To convert Unix time to sfttime:
sfttime = decimal_to_hex((unix - 49020) / 86400)
The name ‘sft’ is the clan name of a group of friends from Munich, Bavaria.
sfttime was created in 3BBE.81[sft] (approximately 2013).