Main Content

uidatepicker

创建日期选择器组件

说明

d = uidatepicker 在新图窗中创建一个日期选择器,并返回 DatePicker 对象。MATLAB® 调用 uifigure 函数来创建该图窗。

d = uidatepicker(Name,Value) 使用一个或多个 Name,Value 对组参量指定 DatePicker 属性值。

d = uidatepicker(parent) 在指定的父容器中创建日期选择器。父容器可以是使用 uifigure 函数创建的 Figure 或其子容器之一。

示例

d = uidatepicker(parent,Name,Value) 在指定的容器中创建日期选择器,并设置一个或多个 DatePicker 属性值。

示例

全部折叠

在 UI 图窗的左上角创建一个日期选择器。

fig = uifigure('Position',[500 500 320 280]);
d = uidatepicker(fig,'Position',[18 235 150 22]);

Date picker in a UI figure window. The date picker has watermark text "mm/dd/yyyy".

创建一个用 dd-MM-yyyy 格式在文本字段中显示日期的日期选择器。正在运行的 App 中将显示新的格式,且所有选定的日期都将使用该格式。

fig = uifigure('Position',[500 500 320 280]);
d = uidatepicker(fig,'Position',[18 235 150 22]);
d.DisplayFormat = 'dd-MM-yyyy';

Date picker in a UI figure window. The date picker has watermark text "dd-mm-yyyy".

创建一个禁用星期日和 2018 年元旦的日期选择器。

fig = uifigure('Position',[500 500 375 280]);
d = uidatepicker(fig,'Position',[18 225 150 22]);
d.DisabledDaysOfWeek = 1;
d.DisabledDates = datetime(2018,1,1);

当您展开日期选择器并浏览到 2018 年 1 月时,这一年的第一天和所有星期日都被禁用。

Date picker in a UI figure window. The date picker is expanded and displays dates in January 2018. January 1st and days that fall on Sunday are dimmed and crossed out.

创建一个通过 ValueChangedFcn 回调来创建图窗和日期选择器的程序文件,将其命名为 mydateapp.m

function mydateapp
fig = uifigure('Position',[340 400 415 300]);
d = uidatepicker(fig,'DisplayFormat','MM-dd-yyyy',...
    'Position',[130 190 150 22],...
    'Value',datetime(2014,4,9),...
    'ValueChangedFcn', @datechange);

    function datechange (src,event)
        lastdate = char(event.PreviousValue);
        newdate = char(event.Value);
        msg = ['Change date from ' lastdate ' to ' newdate '?'];
        % Confirm new date
        selection = uiconfirm(fig,msg,'Confirm Date');
        
        if (strcmp(selection,'Cancel'))
            % Revert to previous selection if cancelled
            d.Value = event.PreviousValue;
        end
    end
end

datechange 将函数显示确认对话框,并确定用户在该对话框中点击的按钮。如果用户点击取消,日期选择器将回到上一个日期。

运行该程序,然后点击某个日期以查看确认对话框。

mydateapp

On the left is a UI figure window with a date picker. April 9th, 2014 is selected, and the cursor is hovering on April 15th, 2014. On the right is a UI figure with a confirmation dialog with text: "Change date from 04-09-2014 to 04-15-2014?".

输入参数

全部折叠

父容器,指定为使用 uifigure 函数创建的 Figure 对象或其子容器之一:TabPanelButtonGroupGridLayout。如果不指定父容器,MATLAB 会调用 uifigure 函数创建新 Figure 对象充当父容器。

名称-值参数

将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: d = uidatepicker('Value',datetime('today')) 会创建一个日期选择器并在用户界面上选中当天的日期。

注意

此处所列的属性只是一部分。有关完整列表,请参阅 DatePicker 属性

选定的日期,指定为在 Limits 属性范围内的 datetime 对象。要使选定的日期变为未指定状态,请将此属性设置为 NaT

如果指定的 datetime 对象包含时间信息,则 Value 属性中只保留日期信息。

示例: d = uidatepicker('Value',datetime('today'))

数据类型: datetime

日期选择器文本字段的显示格式,指定为字符向量或字符串标量。默认格式取决于运行 App 的系统的区域设置。

您指定的格式必须使用有效的字母标识符,这些标识符要符合关于日期时间的 Unicode® 区域设置数据标记语言 (LDML) 标准。要分隔字段,可以包括非字母字符,例如连字符、空格、冒号或任何非 ASCII 字符。

示例: d = uidatepicker('DisplayFormat','dd/MM/yy')

常用格式示例

下表列出了常用的显示格式。以下示例说明 2014 年 4 月 9 日星期三的格式化输出。

Format 的值示例
'yyyy-MM-dd'2014-04-09
'dd/MM/yyyy'09/04/2014
'dd.MM.yyyy'09.04.2014
'yyyy年 MM月 dd日'2014年 04月 09日
'MMMM d, yyyy'April 9, 2014

所有日期时间格式

使用这些字母标识符创建显示格式。下表第三列显示 2014 年 4 月 9 日星期三的输出。

字母标识符描述显示
G年代CE
y年份,没有前导零。2014
yy年份,使用最后两位数。14
yyy, yyyy ...年份,至少使用与 'y' 实例相同的位数对于年份 2014,'yyy' 显示 2014,而 'yyyyy' 则显示 02014
u, uu, ...ISO 年份,指示年份的单个数字。2014
Q季度,使用一位数2
QQ季度,使用两位数02
QQQ季度,缩写2 季度
QQQQ季度,全名第二季度
M月份,使用一位或两位数字的数值4
MM月份,使用两位数字的数值04
MMM月份,缩写名称四月
MMMM月份,全名四月
MMMMM月份,首字母大写A
W一月中的第几周,使用一位数2
d一月中的第几天,使用一位或两位数9
dd一月中的第几天,使用两位数字09
D一年中的第几天,使用一位、两位或三位数99
DD一年中的第几天,使用两位数字99
DDD一年中的第几天,使用三位数099
e一周中的第几天,使用一位或两位数字的数值4,星期日是一周中的第一天
ee一周中的第几天,使用两位数字的数值04
eee星期几,缩写名称Wed
eeee星期几,全名Wednesday
eeeee星期几,使用一位大写数字W

注意

  • 即使 DisplayFormat 包含单词,正在运行的 App 中的编辑字段也接受分隔数值。例如,如果月份格式指定为 'MMMM',App 也会接受数值形式的月份(如 04),但会将其显示为月份名称(如 'April')。

  • 如果用户在正在运行的 App 中指定日期数字,而格式中同时包含日期 (D) 和公历年 (y) 的标识符,则 datetime 可能无法正确读取日期数字。请使用 ISO 年份 (u) 来代替 y

  • 使用一个或多个 u 字符而非 y 字符在使用接近零的年数时解释年份。

值更改函数,指定为下列值之一:

  • 函数句柄。

  • 第一个元素是函数句柄的元胞数组。元胞数组中的后续元素是传递到回调函数的参量。

  • 包含有效 MATLAB 表达式的字符向量(不推荐)。MATLAB 在基础工作区计算此表达式。

当用户通过在文本字段中键入日期或者展开日期选择器并选择日期的方式更改日期时,将执行 ValueChangedFcn 回调。

此回调函数可以访问有关用户与日期选择器交互的特定信息。MATLAB 将 ValueChangedData 对象中的此信息作为第二个参量传递给回调函数。在 App 设计工具中,该参量名为 event。您可以使用圆点表示法获取对象属性。例如,event.PreviousValue 获取之前选择的日期。ValueChangedData 对象不可用于指定为字符向量的回调函数。

下表列出了 ValueChangedData 对象的属性。

属性
Value新选定的日期
PreviousValue之前选定的日期
Source执行回调的组件
EventName'ValueChanged'

当用户重新选择或重新键入当前选定的日期时,不会执行 ValueChangedFcn 回调。当以编程方式更改 Value 属性时,也不会执行该回调。

有关在 App 设计工具中创建回调的详细信息,请参阅App 设计工具中的回调

折叠后的日期选择器相对于父容器的位置和大小,指定为 [left bottom width height] 形式的向量。此表介绍该向量中的每个元素。

元素描述
left从父容器内部左边缘到日期选择器外部左边缘之间的距离
bottom从父容器内部下边缘到日期选择器外部下边缘之间的距离
width日期选择器左右外边缘之间的距离
height日期选择器上下外边缘之间的距离

所有测量值都以像素为单位。

版本历史记录

在 R2018a 中推出

全部展开

另请参阅

函数

属性