A project team I support tracks start and delivery dates in a SharePoint list, and their Power Apps screen saves those dates with a Save button instead of a form. It worked perfectly in the office in Chicago. Then a contractor in another time zone started using it, and some dates landed a day early. Dates are easy to save; saving the right date takes a little care.
In this tutorial, I’ll show you how to patch a date picker value to SharePoint and Excel: new items, existing items, today’s date, blank dates, several dates at once, and date plus time, and how to avoid the time zone surprises.
Quick answer: Use Patch(Projects, Defaults(Projects), {StartDate: dtpStart.SelectedDate}) to save a new item, or replace Defaults(Projects) with LookUp(Projects, ID = 68) to update one. Use Today() to save today’s date, Blank() to clear a date, and DateAdd() to add a time. If dates come out a day off, check that the picker’s DateTimeZone matches how the column stores dates, usually Local.
The basic pattern
Patch(DataSource, Defaults(DataSource), {DateColumn: DatePicker1.SelectedDate})
The date picker’s SelectedDate is the date the user chose, in their local time. Defaults() tells Patch to create a new record; any other record means “update this one.”
Save a date to a new SharePoint item
This Projects list has a Title and a StartDate (date only) column:

The screen has a text input (Title_Txt), a date picker (StartDate_DatePicker) and a Save button:

Set the Save button’s OnSelect:
Patch(
Projects,
Defaults(Projects),
{Title: Title_Txt.Text, StartDate: StartDate_DatePicker.SelectedDate}
)

Enter a title, pick a date and select Save. The new item appears with the chosen date:


Update the date on an existing item
To change one item, look it up by ID and patch only the date. Other columns stay as they are:
Patch(Projects, LookUp(Projects, ID = 68), {StartDate: StartDate_DatePicker.SelectedDate})



In a real app, use the selected gallery item instead of a fixed ID: LookUp(Projects, ID = Gallery1.Selected.ID). Looking up by ID is delegable to SharePoint, so it works on large lists. See how to update a SharePoint item with Patch for more.
Save today’s date
For a “Submitted on” date, don’t trust the picker; use Today():
Patch(Projects, Defaults(Projects), {Title: Title_Txt.Text, StartDate: Today()})

Whatever the user picked, the item gets the current date:


Use Now() instead to save the date and time, in a SharePoint column set to Date and Time. For when an item was created, you usually don’t need a column at all: SharePoint’s built-in Created column already records it.
Clear a date
Blank() saves an empty value:
Patch(Projects, LookUp(Projects, ID = 68), {StartDate: Blank()})


This only works if the column isn’t required in SharePoint.
Save several dates at once
Add each date to the same record. This list also has a DeliveryDate column, and the screen has a second date picker:

Patch(
Projects,
Defaults(Projects),
{
Title: Title_Txt.Text,
StartDate: StartDate_DatePicker.SelectedDate,
DeliveryDate: DeliveryDate_DatePicker.SelectedDate
}
)



It’s also worth checking that the delivery date isn’t before the start date, for example with If(DeliveryDate_DatePicker.SelectedDate < StartDate_DatePicker.SelectedDate, Notify("Delivery can't be before the start.", NotificationType.Warning), Patch(...)).
Save a date and time
A date picker only gives you a date. For a time, add dropdowns for the hour (0 to 23) and minutes (00, 15, 30, 45), and combine them with DateAdd(). Microsoft recommends DateAdd over adding values with + because it’s clearer about units:
Patch(
Projects,
Defaults(Projects),
{
Title: txtTitle.Text,
StartDate: DateAdd(
DateAdd(dtpStart.SelectedDate, Value(ddHour.Selected.Value), TimeUnit.Hours),
Value(ddMinute.Selected.Value), TimeUnit.Minutes
)
}
)

The SharePoint column must be Date and Time. It stores the value in UTC and shows it in each user’s local time, so 11/11 at 16:43 shows as 4:43 PM:

Leave the date picker’s DateTimeZone at Local for this. Some tutorials suggest UTC, but then the picked date is midnight UTC, which is the previous evening in US time zones, and the saved time shifts.
Save a date to Excel
Excel works the same way. This ProductTable table has ProductInvoice, ProductName and PurchaseDate columns:


Patch(
ProductTable,
Defaults(ProductTable),
{
ProductInvoice: txtInvoice.Text,
ProductName: txtProductName.Text,
PurchaseDate: dtpPurchase.SelectedDate
}
)

If the date in Excel is a day off
Excel has no time zones, so a date can shift when the picker’s time zone setting and the way the value is read don’t match. This screenshot shows the problem: 11/15 was picked, and Excel shows 11/14:

Older tutorials fix this with DateValue(Text(SelectedDate, DateTimeFormat.UTC)) + 1. Don’t use it: adding a day only compensates for time zones ahead of UTC, so for users in the US it saves the next day. Instead:
- Keep the date picker’s DateTimeZone at Local and test with a user in each time zone you support.
- Or save the date as text in a fixed format:
PurchaseDate: Text(dtpPurchase.SelectedDate, "yyyy-mm-dd"), with the Excel column formatted as text or a date. Text is never shifted. - For apps used by many people at once, use SharePoint or Dataverse instead. The Excel connector can lock a file for several minutes and doesn’t handle simultaneous writes well.
Limit which dates can be picked
There’s no MinDate or MaxDate property. On the modern date picker, use StartDate and EndDate; dates outside that range can’t be selected:
StartDate = Today()
EndDate = DateAdd(Today(), 30, TimeUnit.Days)
The classic date picker only has StartYear and EndYear, so check the date in your Save button instead. The modern picker also saves as soon as a date is chosen through its OnChange property, while the classic picker needs the user to select OK first.
Show a friendly date
| Label Text | Result |
|---|---|
Text(dtpStart.SelectedDate, "mm/dd/yyyy") | 09/28/2026 |
Text(dtpStart.SelectedDate, "dddd, mmmm d, yyyy") | Monday, September 28, 2026 |
Text(dtpStart.SelectedDate, DateTimeFormat.LongDate) | Monday, September 28, 2026 (in the user’s language) |
Save the date value itself, and use Text only for display. If you use an edit form, SubmitForm saves date fields for you; Patch is for screens without a form or when you need more control. For more date picker ideas, see the modern date picker control.
These Power Apps date tutorials may help next:
- How to Use Power Apps Date Picker Control? [With Useful Examples]
- Power Apps Modern Date Picker Control [How to Use]
- How To Set Default Date in Power Apps Date Picker?
- How to Reset Power Apps Date Picker
- Power Apps Date and Time Functions [With Real Examples]
- Display Date Without Time in Power Apps [With Various Examples]
Frequently Asked Questions
How do I patch a date picker value to SharePoint?
Use Patch(List, Defaults(List), {DateColumn: DatePicker1.SelectedDate}) for a new item. Microsoft covers date and time zone behavior in Troubleshoot date and time issues in canvas apps.
Why is my date one day off after saving?
The date picker’s DateTimeZone doesn’t match how the column stores dates. Keep it at Local for SharePoint dates, and avoid fixes that add or subtract a day.
How do I clear a date in SharePoint from Power Apps?
Patch the column with Blank(), for example {StartDate: Blank()}. The column can’t be required.
How do I save a date and time from Power Apps?
Combine the date picker with hour and minute values using DateAdd, and save to a SharePoint Date and Time column.
How do I stop users from picking past dates?
On the modern date picker, set StartDate to Today(). The classic picker doesn’t have this, so validate the date before saving.

Preeti Sahu is a Microsoft MVP for Power Apps with over six years of experience working with SharePoint Online and the Power Platform. She is the co-author of the book Microsoft Power Platform: A Deep Dive. As a Power Platform developer, she has built various tools with Power Apps and Power Automate, and she makes Microsoft 365 videos for YouTube.
Hello,
You’ve put a note:
“Note: Make sure to keep both the Power Apps and SharePoint time zone as same.”
But it’s not explained how to do it. Could you please explain?