Date Picker
The Date Picker lets a person type a date or pick it from a calendar. In SmartForms Studio you decide which dates are allowed, how the date is written and what it starts with. This page goes through the settings in the order they appear in Properties. For the other form elements, see Items. For what the person sees while filling in the form, see Filling in a Smartform.
The Properties panel has these groups:
| Group | What it sets |
|---|---|
| Information | Name, label, placeholder, helper text, required and read only |
| Valid dates | Which days can be chosen |
| Type & precision | Day, month, year or week, and date ranges |
| Display & input | How the date is written and how it is entered |
| Default & validation | The starting value and the error message |
| Integration | A workflow that runs when the date changes |
The colour, border and size settings are the same as for the other elements. They are described in Items.
Information
| Setting | What it does |
|---|---|
| Property | The field name that identifies the field. Use it in rules, expressions and {{ property }} text |
| Label | The text above or in front of the field |
| Placeholder | The hint shown while the field is empty. See below |
| Helper text | The help text shown on mouseover |
| Required | An error shows if the field is empty |
| Read only | The person cannot change the date |
Placeholder
The placeholder is a small template. If you leave it empty, the field shows the date format, for example dd.MM.yyyy. You can also write your own text and add tokens. Studio fills each token in the field’s own date format.
| Token | Becomes |
|---|---|
{{ format }} | The date format, for example dd.MM.yyyy |
{{ min }} | The earliest allowed date |
{{ max }} | The latest allowed date |
{{ today }} | Today’s date |
{{ today+3days }} | The date three days from today |
{{ otherField+1year }} | One year after the date in another Date Picker. Use that field’s Property name |
[[ deliveryDate+30days ]] | 30 days after a form field, a data-table value or a Doxis variable |
[[ start-date | add=-2weeks ]] | The same with a pipe, for names with hyphens. See Date expressions |
{{ min + 1day }} | The day after the earliest allowed date |
A token updates as soon as the date it points to changes. A token that can’t be filled in yet is left out, and if nothing else is left the field shows the date format.
Studio shows the tokens as chips under the field. Click a chip to add it. A Shows as line previews the result, for example Between 05.11.2026 and 31.12.2026.
Valid dates
A day can be chosen only if it passes all of these checks, in this order:
- 1Min dateNot before the earliest date
- 2Max dateNot after the latest date
- 3WeekdaysOn an allowed weekday
- 4Allowed datesIn the allowed list or pattern
- 5Blocked datesNot blocked
- 6HolidaysNot a public holiday
The form and the server use the same checks. If a day is refused, the person sees the error message and the date is not saved.
Min date and Max date
Each limit is a fixed date or a date expression, for example:
today+3daystoday+5workdays, which counts working days and skips weekends{{ startDate }}+1year, one year after another Date Picker{{ min + 60days }}in Max date, which means 60 days after this field’s own Min date
While the date a limit points to is still empty, that limit does not apply.
Date expressions
Min date, Max date, the default value and placeholder tokens all use the same expressions.
What an expression starts from
| Start | Example |
|---|---|
| A fixed date | 2026-11-01 |
| Today | today or {{ today }} |
| Another field, data-table value or Doxis variable | {{ startDate }}, {{ datepicker-1 }}, {{ doc.ObjectDate }} |
| This field’s other limit | {{ min }} in Max date, {{ max }} in Min date |
Units: days, workdays, weeks, months and years, singular or plural, with + or -. Workdays skip Saturdays and Sundays, and also public holidays when Exclude public holidays is on. A month or a year added to the 29th, 30th or 31st lands on the last day of a shorter month: 31.01 + 1 month is 28.02.
Three ways to write an offset
| Form | Example | Notes |
|---|---|---|
| After the braces | {{ startDate }}+1year | |
| Inside the braces | {{ startDate + 1year }} | Spaces are optional |
| With a pipe | {{ start-date | add=-1month }} | The safest form for names with hyphens or digits |
Names with hyphens. Property names, data-table values and Doxis variables often contain hyphens, such as datepicker-1 or start-date. A hyphen inside a name stays part of the name. Only a hyphen followed by a number and a unit at the end counts as minus. So {{ datepicker-1-1month }} means datepicker-1 minus one month. If a value really has a name that looks like an offset, such as notice-3days, it is used as it is.
Pipes. As in [[ INPUT : name | key=value ]], everything before the first | is the name, and each | add= after it is one step. Steps run from left to right. A sign is optional (add=3days adds) and spaces are allowed:
| Expression | With start-date = 31.08.2026 |
|---|---|
{{ start-date | add=-2weeks }} | 17.08.2026 |
{{ start-date | add=+6months | add=-1day }} | 27.02.2027 |
{{ start-date | add=+1month }}+1day | 01.10.2026 (an offset after the braces runs last) |
In the pipe form the name is taken as written. {{ start-date-1month | add=1day }} looks for a field named start-date-1month, so don’t put an offset both in the name and in a pipe.
Minus signs. -, − and – all mean minus. Word and Outlook often turn - into – when you paste.
When an expression can’t be read. If an expression points to an empty or unknown name, or a pipe step is not add= followed by a number and a unit (for example add=1fortnight or sub=1day), the limit does not apply and a placeholder token is left out. One unreadable step makes the whole expression unreadable, so it is never partly applied.
Allowed weekdays
Tick the days of the week that can be chosen, Mon to Sun. Weekdays ticks Monday to Friday. All ticks every day.
Allowed dates
Choose how the allowed dates are described:
| Choice | What it allows |
|---|---|
| Any | Every date that passes the other checks |
| Dates | Only the dates in your list |
| Day | Only certain days of the month, from 1 to 31 or Last. 31 means the last day of the month in months that are shorter |
| Year | Only certain years |
For Dates, Day and Year you can type a fixed list, or take the values from a data table. Use the data table when the list changes often or is long.
Exclude public holidays
Tick Exclude public holidays and choose a country. Public holidays in that country cannot be chosen. These countries are supported: Norway (NO), Sweden (SE), Denmark (DK), Finland (FI), Germany (DE), United Kingdom (GB), Netherlands (NL), Poland (PL), Austria (AT), Switzerland (CH), France (FR) and Iceland (IS).
When you tick the box, Studio picks your own country from your browser language, as long as it is in the list. Change it if the form is for another country.
Blocked dates
Add single dates or date ranges that cannot be chosen, for example a company holiday. Click Add date or range. For a range, fill in both the start and the end. The end cannot be before the start.
Type & precision
| Setting | What it does |
|---|---|
| Precision | Day, Month, Year or Week. The person picks a whole month, year or week instead of a day |
| Date range (from – to) | The person picks a start and an end date in one field |
Display & input
| Setting | What it does |
|---|---|
| Display format | YYYY-MM-DD, DD-MM-YYYY, MM-DD-YYYY or DD.MM.YYYY |
| First day of week | Follow format, Monday, Saturday or Sunday |
| Show week numbers | Shows the week number in the calendar |
| Calendar opens on | The month the calendar starts on: the Selected date, the Current month or the Min date |
| Input method | Type + pick lets the person type or use the calendar. Picker allows the calendar only. Type has no calendar button |
The display format changes only what people see. The date is always stored in the standard form, whatever the format:
| Precision | Stored as |
|---|---|
| Day | 2026-11-03 |
| Month | 2026-11 |
| Year | 2026 |
| Week | 2026-W45 |
| Date range | a start and an end date |
Text in the form that uses {{ property }}, and the PDF, show the date in the format you chose for the Date Picker. With a right-to-left language, the date is still written left to right.
Default & validation
Default value
Choose a Data source:
| Data source | What it does |
|---|---|
| Static | No starting date |
| Variable | Takes the date from a variable, for example [[ doc.ObjectDate ]]. Enter the variable name |
| Date or expression | A fixed date or a date expression such as today+3days, {{ startDate }}+1year or {{ start-date | add=+1month }}. If it lands on a day that is not allowed, the next allowed day is used |
Error message
Write your own Error message for a date that is not allowed. It can use {{ min }} and {{ max }}, for example Choose a date between {{ min }} and {{ max }}.
Integration
Workflow - On Value Change runs a workflow when the person picks or types a date. A default value that is filled in when the form opens does not start the workflow.
Tips
- Typing
03112026fills in03.11.2026when the format is DD.MM.YYYY. today+5workdaysskips Saturdays and Sundays, so it works well for a delivery or answer deadline.- Use Day with Last to allow only the last day of the month, for example for an invoice date.
- Write a placeholder such as
Between {{ min }} and {{ max }}so people see the limits before they choose. - To let someone choose an end date after a start date, set Min date of the end field to
{{ startDate }}. - For a field name with hyphens, use a pipe:
{{ contract-start | add=+6months | add=-1day }}. - Test the form with an allowed and a refused date. See Test your Smartform.