SPFx DateTimePicker Control (WP09)

Introduction

Modern SharePoint solutions often require users to enter both dates and times in a consistent and user-friendly way. Typical business scenarios include scheduling meetings, defining publishing dates, creating project milestones, registering service requests, and managing deadlines.

In SharePoint Framework (SPFx), developers can build rich client-side experiences using React and Microsoft 365 technologies. The PnP SPFx React Controls library extends SPFx by providing reusable components that reduce development time and deliver a consistent user experience.

One of these controls is the DateTimePicker, which combines date and time selection into a single component. The control supports both 12-hour (AM/PM) and 24-hour formats, can be used in uncontrolled mode for simple scenarios, or controlled mode when React state management is required.

Official documentation:

PnP DateTimePicker Control Documentation


What is the DateTimePicker Control?

The DateTimePicker control allows users to:

  • Select a date from a calendar
  • Select hours and minutes
  • Work with 12-hour format (AM/PM)
  • Work with 24-hour format
  • Integrate directly with React state
  • Receive change notifications through events

Common use cases include:

  • Event scheduling
  • Task deadlines
  • Approval expiration dates
  • Booking systems
  • Project planning
  • Content publishing dates

Demo Overview

This example demonstrates two implementations:

Example 1 – Uncontrolled DateTimePicker

Uses a standard DateTimePicker configured for:

  • Date and time selection
  • 12-hour clock
  • No React state management
<DateTimePicker
label="DateTime Picker - 12h"
dateConvention={DateConvention.DateTime}
timeConvention={TimeConvention.Hours12}
/>

Example 2 – Controlled DateTimePicker

Uses React state to:

  • Store the selected date
  • React to changes
  • Update the component automatically
<DateTimePicker
label="DateTime Picker - 24h"
dateConvention={DateConvention.DateTime}
timeConvention={TimeConvention.Hours24}
value={date}
onChange={handleChange}
/>

Complete React Component

import * as React from 'react';
import {
DateTimePicker,
DateConvention,
TimeConvention
} from '@pnp/spfx-controls-react/lib/DateTimePicker';
const DateTimeEd: React.FC<{}> = () => {
const [date, setDate] = React.useState<Date | undefined>(
new Date()
);
const handleChange = (
newDate: Date | undefined
) => {
console.log("Nova data:", newDate);
setDate(newDate);
};
return (
<div>
<DateTimePicker
label="DateTime Picker - 12h"
dateConvention={DateConvention.DateTime}
timeConvention={TimeConvention.Hours12}
/>
{/* Controlled */}
<DateTimePicker
label="DateTime Picker - 24h"
dateConvention={DateConvention.DateTime}
timeConvention={TimeConvention.Hours24}
value={date}
onChange={handleChange}
/>
</div>
);
};
export default DateTimeEd;

Understanding the Main Properties

dateConvention

Defines what the control should display.

dateConvention={DateConvention.DateTime}

Options include:

DateConvention.Date
DateConvention.Time
DateConvention.DateTime

timeConvention

Defines the time format.

12-hour format:

timeConvention={TimeConvention.Hours12}

Result:

12:00 AM
1:30 PM
8:45 PM

24-hour format:

timeConvention={TimeConvention.Hours24}

Result:

00:00
13:30
20:45

value

Used in controlled mode.

value={date}

The control always displays the value stored in React state.


onChange

Executed whenever the user changes the date or time.

onChange={handleChange}

Example:

const handleChange = (
newDate: Date | undefined
) => {
console.log(newDate);
setDate(newDate);
};

React State Integration

The controlled example uses React Hooks.

State declaration:

const [date, setDate] =
React.useState<Date | undefined>(
new Date()
);

State update:

setDate(newDate);

This pattern is recommended for:

  • Forms
  • Dynamic validation
  • Saving data to SharePoint
  • API integrations
  • Business workflows

Visual Result

The page displays:

  1. DateTime Picker configured in 12-hour mode.
  2. DateTime Picker configured in 24-hour mode.
  3. Calendar selector.
  4. Hour selector.
  5. Minute selector.
  6. React state synchronization.

The interface is similar to the screenshot provided, showing both time conventions side-by-side.


Advantages of Using DateTimePicker

Faster Development

No need to combine:

DatePicker
+
Dropdown Hours
+
Dropdown Minutes

into a custom solution.


Better User Experience

Users interact with a single integrated control.


SPFx Ready

Works naturally inside:

  • SharePoint Online
  • SPFx Web Parts
  • Microsoft 365 solutions

React Friendly

Supports:

  • Hooks
  • State management
  • Event handling
  • Form integration

Conclusion

The PnP DateTimePicker control is an excellent option for SPFx developers who need reliable date and time selection capabilities. It provides support for both 12-hour and 24-hour formats, integrates seamlessly with React state management, and significantly reduces the amount of custom code required when building scheduling and data-entry experiences in SharePoint.

For business applications such as event management, project tracking, workflow deadlines, and publishing schedules, DateTimePicker offers a professional and production-ready solution while keeping the implementation simple and maintainable.


References


PnP Controls Roadmap Progress

WPControlStatus
WP01AccessibleAccordion
WP02Accordion
WP03AdaptiveCardHost
WP04AnimatedDialog
WP05Carousel
WP06ChartControl
WP07Dashboard
WP08DragDropFiles
WP09DateTimePicker
WP10EnhancedThemeProvider

Edvaldo Guimrães Filho Avatar

Published by