296 lines
7.7 KiB
Markdown
296 lines
7.7 KiB
Markdown
# Date Calc
|
||
|
||
This plugin adds a `date-calc` fenced code block you can embed in your notes to render date calculations.
|
||
|
||
Example (birthday):
|
||
|
||
```date-calc
|
||
type: birthday
|
||
birthday: 1992-08-16
|
||
```
|
||
|
||
Supported types and fields:
|
||
|
||
- birthday
|
||
- birthday (or birthdate or date): YYYY-MM-DD
|
||
- If not provided in the block/inline config, the plugin will also look for a `birthday` (or `birthdate`) property in the note’s frontmatter.
|
||
- Output: Age in years and time until next birthday (days, or months if > 31 days, with half-month rounding)
|
||
|
||
- countdown / until
|
||
- to (or date or until): target date/time
|
||
- from (optional): starting date/time (defaults to now)
|
||
- label (optional): prefix label
|
||
- Output: Humanized time until target, or how long ago if past
|
||
|
||
- diff
|
||
- from (or start): start date/time
|
||
- to (or end): end date/time
|
||
- Output: Humanized difference between the two dates
|
||
|
||
- since
|
||
- since (or from or date): date/time of the event
|
||
- Output: Humanized time since that date (or time until if it’s in the future)
|
||
|
||
Notes:
|
||
- Dates are interpreted in your local timezone. For birthdays, calculations use local midnight to avoid timezone inconsistencies.
|
||
- YAML inside the code block must be valid. The plugin will show an error if the YAML cannot be parsed.
|
||
|
||
More examples:
|
||
|
||
1) Birthday basics
|
||
|
||
```date-calc
|
||
type: birthday
|
||
birthday: 2000-05-21
|
||
```
|
||
|
||
Aliases for the date field also work:
|
||
|
||
```date-calc
|
||
type: birthday
|
||
birthdate: 2000-05-21
|
||
```
|
||
|
||
2) Countdown to a date (future)
|
||
|
||
```date-calc
|
||
type: countdown
|
||
label: New Year
|
||
to: 2025-12-31 23:59
|
||
```
|
||
|
||
3) Until (alias of countdown)
|
||
|
||
```date-calc
|
||
type: until
|
||
to: 2030-01-01
|
||
```
|
||
|
||
4) Countdown from a custom start time
|
||
|
||
```date-calc
|
||
type: countdown
|
||
label: Sprint ends
|
||
to: 2025-10-15 17:00
|
||
from: 2025-10-01 09:00
|
||
```
|
||
|
||
5) Since an event (past)
|
||
|
||
```date-calc
|
||
type: since
|
||
since: 2024-12-20
|
||
```
|
||
|
||
If the date is in the future, the text will say "In: ..." instead of "Since: ... ago".
|
||
|
||
6) Difference between two dates
|
||
|
||
```date-calc
|
||
type: diff
|
||
from: 2024-02-29
|
||
to: 2025-03-01
|
||
```
|
||
|
||
7) Use times as well as dates
|
||
|
||
```date-calc
|
||
type: diff
|
||
from: 2025-09-19 08:00
|
||
to: 2025-09-19 16:30
|
||
```
|
||
|
||
8) Friendly birthday messages near the day
|
||
|
||
```date-calc
|
||
type: birthday
|
||
birthday: 1992-08-16
|
||
```
|
||
|
||
- If today is the birthday: "Wish them Happy Birthday!"
|
||
- If tomorrow is the birthday: "Their birthday is tomorrow!"
|
||
- If the birthday is > 31 days away: months are shown, with a 0.5 month added when roughly half a month remains.
|
||
|
||
9) Error handling examples
|
||
|
||
Invalid YAML:
|
||
|
||
```date-calc
|
||
this: is: not: valid
|
||
```
|
||
|
||
Missing required fields:
|
||
|
||
```date-calc
|
||
type: diff
|
||
from: 2025-01-01
|
||
# missing: to
|
||
```
|
||
|
||
The plugin will show a helpful error message in these cases.
|
||
|
||
Inline usage:
|
||
- You can also use inline code like:
|
||
- `\`date-calc: birthday=1992-08-16\`` → renders a birthday summary.
|
||
- `\`date-calc: to=2025-12-31 label=NewYear\`` → renders a countdown.
|
||
- `\`date-calc: since=2024-12-20\`` → time since.
|
||
- `\`date-calc: from=2025-09-19 to=2025-09-20\`` → difference between two dates.
|
||
- Inline also accepts YAML/inline-map after the colon, e.g. `\`date-calc: {type: birthday, birthday: 1992-08-16}\``.
|
||
- For inline birthday, if no date is given, the note’s frontmatter `birthday`/`birthdate` is used when present.
|
||
|
||
Tips:
|
||
- You can style the rendered line using the CSS class `date-calc` in your snippet or theme.
|
||
- ISO-like date strings (YYYY-MM-DD or YYYY-MM-DD HH:mm) work well and are interpreted in your local timezone.
|
||
- For birthdays, calculations are normalized to local midnight to avoid off-by-one day issues due to timezones.
|
||
|
||
# Date Calc
|
||
|
||
This plugin adds a `date-calc` fenced code block you can embed in your notes to render date calculations.
|
||
|
||
Example (birthday):
|
||
|
||
```date-calc
|
||
type: birthday
|
||
birthday: 1992-08-16
|
||
```
|
||
|
||
Supported types and fields:
|
||
|
||
- birthday
|
||
- birthday (or birthdate or date): YYYY-MM-DD
|
||
- If not provided in the block/inline config, the plugin will also look for a `birthday` (or `birthdate`) property in the note’s frontmatter.
|
||
- Output: Age in years and time until next birthday (days, or months if > 31 days, with half-month rounding)
|
||
|
||
- countdown / until
|
||
- to (or date or until): target date/time
|
||
- from (optional): starting date/time (defaults to now)
|
||
- label (optional): prefix label
|
||
- Output: Humanized time until target, or how long ago if past
|
||
|
||
- diff
|
||
- from (or start): start date/time
|
||
- to (or end): end date/time
|
||
- Output: Humanized difference between the two dates
|
||
|
||
- since
|
||
- since (or from or date): date/time of the event
|
||
- Output: Humanized time since that date (or time until if it’s in the future)
|
||
|
||
Notes:
|
||
- Dates are interpreted in your local timezone. For birthdays, calculations use local midnight to avoid timezone inconsistencies.
|
||
- YAML inside the code block must be valid. The plugin will show an error if the YAML cannot be parsed.
|
||
|
||
More examples:
|
||
|
||
1) Birthday basics
|
||
|
||
```date-calc
|
||
type: birthday
|
||
birthday: 2000-05-21
|
||
```
|
||
|
||
Aliases for the date field also work:
|
||
|
||
```date-calc
|
||
type: birthday
|
||
birthdate: 2000-05-21
|
||
```
|
||
|
||
2) Countdown to a date (future)
|
||
|
||
```date-calc
|
||
type: countdown
|
||
label: New Year
|
||
to: 2025-12-31 23:59
|
||
```
|
||
|
||
3) Until (alias of countdown)
|
||
|
||
```date-calc
|
||
type: until
|
||
to: 2030-01-01
|
||
```
|
||
|
||
4) Countdown from a custom start time
|
||
|
||
```date-calc
|
||
type: countdown
|
||
label: Sprint ends
|
||
to: 2025-10-15 17:00
|
||
from: 2025-10-01 09:00
|
||
```
|
||
|
||
5) Since an event (past)
|
||
|
||
```date-calc
|
||
type: since
|
||
since: 2024-12-20
|
||
```
|
||
|
||
If the date is in the future, the text will say "In: ..." instead of "Since: ... ago".
|
||
|
||
6) Difference between two dates
|
||
|
||
```date-calc
|
||
type: diff
|
||
from: 2024-02-29
|
||
to: 2025-03-01
|
||
```
|
||
|
||
7) Use times as well as dates
|
||
|
||
```date-calc
|
||
type: diff
|
||
from: 2025-09-19 08:00
|
||
to: 2025-09-19 16:30
|
||
```
|
||
|
||
8) Friendly birthday messages near the day
|
||
|
||
```date-calc
|
||
type: birthday
|
||
birthday: 1992-08-16
|
||
```
|
||
|
||
- If today is the birthday: "Wish them Happy Birthday!"
|
||
- If tomorrow is the birthday: "Their birthday is tomorrow!"
|
||
- If the birthday is > 31 days away: months are shown, with a 0.5 month added when roughly half a month remains.
|
||
|
||
9) Error handling examples
|
||
|
||
Invalid YAML:
|
||
|
||
```date-calc
|
||
this: is: not: valid
|
||
```
|
||
|
||
Missing required fields:
|
||
|
||
```date-calc
|
||
type: diff
|
||
from: 2025-01-01
|
||
# missing: to
|
||
```
|
||
|
||
The plugin will show a helpful error message in these cases.
|
||
|
||
Inline usage:
|
||
- You can also use inline code like:
|
||
- `\`date-calc: birthday=1992-08-16\`` → renders a birthday summary.
|
||
- `\`date-calc: to=2025-12-31 label=NewYear\`` → renders a countdown.
|
||
- `\`date-calc: since=2024-12-20\`` → time since.
|
||
- `\`date-calc: from=2025-09-19 to=2025-09-20\`` → difference between two dates.
|
||
- Inline also accepts YAML/inline-map after the colon, e.g. `\`date-calc: {type: birthday, birthday: 1992-08-16}\``.
|
||
- For inline birthday, if no date is given, the note’s frontmatter `birthday`/`birthdate` is used when present.
|
||
|
||
Troubleshooting inline rendering:
|
||
- Inline replacements only run in Reading view and in Live Preview (rendered sections). In Source mode, you’ll just see the literal inline code.
|
||
- Type it exactly with a single pair of backticks, e.g. `\`date-calc:birthday\`` or `\`date-calc: birthday=1992-08-16\`` (no triple backticks).
|
||
- If it still shows as literal code, try: toggle the note to Reading view and back, or reload the app, or disable/enable the plugin. The plugin’s inline processor now runs late to avoid conflicts with other processors.
|
||
- Inline code inside fenced code blocks is intentionally ignored by the plugin so you can document examples in notes and the README.
|
||
|
||
Tips:
|
||
- You can style the rendered line using the CSS class `date-calc` in your snippet or theme.
|
||
- ISO-like date strings (YYYY-MM-DD or YYYY-MM-DD HH:mm) work well and are interpreted in your local timezone.
|
||
- For birthdays, calculations are normalized to local midnight to avoid off-by-one day issues due to timezones.
|