Date & Time Macros: Dynamic Snippets That Stay Current
Insert today's date, calculated deadlines, timestamps, and more with TypeSnap's date and time macros.
Static text is useful. Dynamic text is powerful. TypeSnap macros let you insert dates, times, and other values that change every time a snippet expands.
All macros use double-brace syntax: {{macro}}.
Basic Date and Time
The simplest macros give you the current date or time:
| Macro | Output |
|---|---|
{{date}} |
January 15, 2026 |
{{time}} |
2:30 PM |
{{now}} |
January 15, 2026 at 2:30 PM |
{{today}} |
January 15, 2026 |
{{tomorrow}} |
January 16, 2026 |
{{yesterday}} |
January 14, 2026 |
Example: Daily Standup
Abbreviation: ;standup
## Standup — {{date:EEEE, MMMM d}}
**Yesterday:**
- {{cursor}}
**Today:**
-
**Blockers:**
- None
Type ;standup and you get a standup template with today’s day and date filled in, with your cursor positioned right where you need to start typing.
Custom Date Formats
Add a format string after the colon to control how dates appear:
| Macro | Output |
|---|---|
{{date:yyyy-MM-dd}} |
2026-01-15 |
{{date:MM/dd/yyyy}} |
01/15/2026 |
{{date:MMMM d, yyyy}} |
January 15, 2026 |
{{date:EEEE}} |
Wednesday |
{{date:MMM d}} |
Jan 15 |
{{date:yyyy}} |
2026 |
Format Codes Reference
| Code | Meaning | Example |
|---|---|---|
yyyy |
4-digit year | 2026 |
yy |
2-digit year | 26 |
MMMM |
Full month name | January |
MMM |
Short month name | Jan |
MM |
Month number (padded) | 01 |
M |
Month number | 1 |
dd |
Day (padded) | 05 |
d |
Day | 5 |
EEEE |
Full weekday | Wednesday |
EEE |
Short weekday | Wed |
HH |
Hour, 24-hour (padded) | 14 |
hh |
Hour, 12-hour (padded) | 02 |
h |
Hour, 12-hour | 2 |
mm |
Minutes | 30 |
ss |
Seconds | 45 |
a |
AM/PM | PM |
Custom Time Formats
{{time:HH:mm}} → 14:30
{{time:h:mm a}} → 2:30 PM
{{time:HH:mm:ss}} → 14:30:45
Date Offsets
Need a date in the future or past? Add an offset:
| Macro | Meaning |
|---|---|
{{date+7d}} |
7 days from now |
{{date-3d}} |
3 days ago |
{{date+1w}} |
1 week from now |
{{date-2w}} |
2 weeks ago |
{{date+1m}} |
1 month from now |
{{date+1y}} |
1 year from now |
{{date+2H}} |
2 hours from now |
{{date+30M}} |
30 minutes from now |
Combine offsets with formats:
{{date+7d:MMMM d, yyyy}} → January 22, 2026
{{date+1m:MM/dd/yyyy}} → 02/15/2026
{{date-1y:yyyy}} → 2025
Example: Invoice with Due Date
Abbreviation: ;invoice
INVOICE
Date: {{date:MMMM d, yyyy}}
Due: {{date+30d:MMMM d, yyyy}}
Bill To:
{{input:Client Name}}
Amount: ${{input:Amount}}
Payment is due within 30 days. Thank you for your business.
This creates an invoice with today’s date and a due date automatically set 30 days out.
Example: Meeting Follow-up
Abbreviation: ;followup
Hi {{input:Name}},
Thanks for meeting today ({{date:EEEE, MMMM d}}). As discussed, I'll have the deliverables ready by {{date+5d:EEEE, MMMM d}}.
Let me know if you have any questions.
Best,
{{snippet:;sig}}
This uses a date offset for the deadline and nests your signature snippet.
Other Dynamic Macros
Beyond dates, TypeSnap has several other macros that insert dynamic content.
Clipboard
{{clipboard}} pastes whatever is currently on your clipboard.
Abbreviation: ;link
<a href="{{clipboard}}">{{cursor}}</a>
Copy a URL, type ;link, and you get an HTML link with the URL filled in and your cursor positioned to type the link text.
Cursor Positioning
{{cursor}} places your cursor at that position after expansion.
Abbreviation: ;todo
- [ ] {{cursor}}
Type ;todo and your cursor lands right after the checkbox, ready to type the task.
Random Numbers
{{random}} generates a random number. You can specify a range:
| Macro | Output |
|---|---|
{{random}} |
0–100 |
{{random:6}} |
0–6 |
{{random:1-100}} |
1–100 |
{{random:100-999}} |
100–999 |
UUID
{{uuid}} generates a unique identifier:
{{uuid}} → 550e8400-e29b-41d4-a716-446655440000
Useful for developers who need unique IDs in test data or configuration files.
Nested Snippets
{{snippet:abbreviation}} expands another snippet inline:
Abbreviation: ;sig
Content: Aaron Hampton, Senior Developer
Abbreviation: ;reply
Content:
Hi {{input:Name}},
{{cursor}}
Best regards,
{{snippet:;sig}}
The ;reply snippet pulls in your signature automatically. Change your signature in one place and every snippet that references it stays up to date.
Key Simulation
{{key:...}} simulates pressing a key:
| Macro | Key |
|---|---|
{{key:tab}} |
Tab |
{{key:return}} |
Return/Enter |
{{key:enter}} |
Return/Enter (alias) |
{{key:escape}} |
Escape |
{{key:backspace}} |
Backspace |
{{key:delete}} |
Delete (forward) |
{{key:space}} |
Space |
{{key:up}} |
Up Arrow |
{{key:down}} |
Down Arrow |
{{key:left}} |
Left Arrow |
{{key:right}} |
Right Arrow |
Useful for filling in forms:
Abbreviation: ;addr
123 Main Street{{key:tab}}Apt 4B{{key:tab}}Springfield{{key:tab}}IL{{key:tab}}62704
This fills in an address form, tabbing between fields automatically.
Combining Macros
Macros can be mixed freely in any snippet:
Abbreviation: ;log
[{{date:yyyy-MM-dd}} {{time:HH:mm:ss}}] [{{select:INFO,WARN,ERROR}}] {{input:Message}}
This prompts you to pick a log level and type a message, then formats it with a timestamp.
Every macro works with every content type and trigger mode. Start with the simple ones — {{date}} and {{clipboard}} — and build up from there as you need them.
Stop typing the same things over and over
TypeSnap expands your snippets instantly. One-time purchase, no subscription.