Time zone
Your account has a time zone, and it decides when today turns over. That matters for anything dated: the next due date of a recurring item, the Until payday window, and the first day of a Forecast.
Setting added in 0.2.1.
Why the server decides "today"
"Today" is your calendar day in your account's time zone, worked out on the server and returned with every response that depends on it. The browser clock isn't trusted. That way the Recurring page, the widget, the forecast and any plugin all agree on the date, even when two of them are open in different places.
Setting it
- At sign-up, a new account takes your browser's time zone. If the browser
reports a zone the server doesn't recognise, the account starts on
UTC. Sign-up never fails because of it. - In Settings → Time zone, pick any zone. If it differs from your browser's zone, the section offers a one-click Use <your browser's zone>.
Zones are IANA names, such as America/New_York or Europe/London. They're
matched case-insensitively and stored in their canonical spelling, so
us/eastern is saved as America/New_York. Fixed offsets such as +01:00
are refused: they have no daylight saving time, and PostgreSQL reads their sign
the opposite way, so a stored offset would be wrong half the year or worse.
Accounts created before 0.2.1
Accounts created before 0.2.1 are on UTC, because there was no way to set
the zone yet. West of UTC, "today" turns over in the evening (8pm in New York
in summer), so a bill due tomorrow shows as due today. Open Settings → Time
zone once after upgrading and use your browser's zone.
From the API
GET /api/v1/auth/me returns the zone, and
PATCH /api/v1/auth/me with { "timezone": "America/New_York" } changes it.
An unknown zone answers 400 validation_failed. See
API reference.