Skip to content

TimePicker

Select time with an interactive picker interface.

import { TimePicker } from 'asterui'

Basic TimePicker

Simple time picker with default 24-hour format.

import { TimePicker } from 'asterui'

function App() {
  return (
      <TimePicker placeholder="Select time" />
    )
}

export default App

12-Hour Format

Time picker with 12-hour format and AM/PM selection.

import { TimePicker } from 'asterui'

function App() {
  return (
      <TimePicker format="12" placeholder="Select time" />
    )
}

export default App

With Seconds

Time picker that includes seconds selection.

import { TimePicker } from 'asterui'

function App() {
  return (
      <TimePicker showSeconds placeholder="Select time" />
    )
}

export default App

Controlled

Controlled time picker with state management.

Selected: None
import { TimePicker, Space, Typography } from 'asterui'
import { useState } from 'react'

function App() {
  const [time, setTime] = useState<Date | null>(null)
  
  return (
      <Space direction="vertical">
        <TimePicker value={time} onChange={setTime} />
        <Typography.Text size="sm" muted>
          Selected: {time ? time.toLocaleTimeString() : 'None'}
        </Typography.Text>
      </Space>
    )
}

export default App

Different Sizes

Time picker in various sizes.

import { TimePicker, Space } from 'asterui'

function App() {
  return (
      <Space direction="vertical">
        <TimePicker size="xs" placeholder="Extra small" />
        <TimePicker size="sm" placeholder="Small" />
        <TimePicker size="md" placeholder="Medium" />
        <TimePicker size="lg" placeholder="Large" />
      </Space>
    )
}

export default App

Disabled

Disabled time picker with a default value.

import { TimePicker } from 'asterui'

function App() {
  return (
      <TimePicker disabled defaultValue={new Date()} />
    )
}

export default App

Time Steps

Time picker with custom intervals (15-minute steps).

import { TimePicker } from 'asterui'

function App() {
  return (
      <TimePicker minuteStep={15} placeholder="Select time (15 min intervals)" />
    )
}

export default App

In Form

TimePicker integrated with Form component using Row/Col layout.

 

 

import { TimePicker, Form, Button, Row, Col, notification } from 'asterui'

function App() {
  const handleSubmit = (values: Record<string, unknown>) => {
    const startTime = values.startTime as Date | null
    const endTime = values.endTime as Date | null
    notification.success({
      message: 'Form Submitted',
      description: `Start: ${startTime?.toLocaleTimeString() || 'Not set'}, End: ${endTime?.toLocaleTimeString() || 'Not set'}`,
    })
  }
  
  return (
      <Form onFinish={handleSubmit}>
        <Row gutter={16}>
          <Col span={12}>
            <Form.Item name="startTime" label="Start Time" rules={{ required: 'Please select start time' }}>
              <TimePicker placeholder="Start" />
            </Form.Item>
          </Col>
          <Col span={12}>
            <Form.Item name="endTime" label="End Time">
              <TimePicker placeholder="End" />
            </Form.Item>
          </Col>
        </Row>
        <Form.Item>
          <Button htmlType="submit" color="primary">
            Submit
          </Button>
        </Form.Item>
      </Form>
    )
}

export default App
PropertyDescriptionTypeDefault
valueControlled selected timeDate | null-
defaultValueDefault selected time (uncontrolled)Date | null-
onChangeCallback when time is selected(date: Date | null) => void-
formatTime display format (12-hour or 24-hour)'12' | '24''24'
placeholderInput placeholder textstring"Select time"
disabledDisable the time pickerbooleanfalse
sizeInput size'xs' | 'sm' | 'md' | 'lg''md'
showSecondsShow seconds column in the time pickerbooleanfalse
allowClearShow clear button when time is selectedbooleantrue
openControlled open state of the dropdownboolean-
onOpenChangeCallback when dropdown open state changes(open: boolean) => void-
hourStepInterval between hours in the pickernumber1
minuteStepInterval between minutes in the pickernumber1
secondStepInterval between seconds in the pickernumber1
statusValidation status'error' | 'warning'-
data-testidTest ID prefix for child elementsstring"timepicker"
classNameAdditional CSS classesstring-
  • Input field has aria-haspopup and aria-expanded attributes
  • Dropdown uses role="dialog" with proper labeling
  • Time columns use role="listbox" with aria-label
  • Time options use role="option" with aria-selected
  • Full keyboard navigation: Arrow keys to navigate, Escape to close, Enter to confirm
  • Clear button has aria-label for screen readers
  • Disabled state properly communicated to assistive technology