本文档描述了 DateTime 掩码模式,它被特殊设计用于以不同的格式输入日期/时间值。特定的 DateTime 掩码依赖于当前的 culture 设置。
要获得关于其他掩码模式的信息,请参阅 掩码编辑器概述 文档。
在本主题中:
日期-时间掩码模式
XtraEditors 库提供了两种 DateTime 掩码模式:
- DateTime 掩码模式;
- DateTimeAdvancingCaret 掩码模式。 它与前一种掩码模式类似。 唯一的区别是在最终用户输入并完成日期/时间值特定的部分之后,插入点会自动移动到可编辑日期/时间值的后续部分。
在默认情况下,DateEdit 控件使用 MaskType.DateTime 掩码模式。 要允许插入点自动步进,则把编辑器的掩码类型设置为 MaskType.DateTimeAdvancingCaret。
可以使用预定义掩码或自定义掩码。 这些掩码与在 MSDN 中的 日期和时间格式字符串 文档描述的显示格式相类似,因此编辑器的编辑掩码与显示格式可以相匹配。 在这种情况下,在编辑模式和显式模式中的编辑器取值将是相同的。 要定制编辑器的显示格式,可以使用 RepositoryItem.DisplayFormat 属性。下面列出的大多数掩码都会受到当前 culture 的影响。 例如,culture 定义了月份名称、用作日期分隔符的符号、短日期和长日期模式等。 所有这些设置都由当前 culture 的 CultureInfo.DateTimeFormat 属性确定。 要定制这些系统设置,则在控制面板中使用“区域和语言选项”对话框。
日期/时间掩码仅支持下列历法: Gregorian(格里历)、Korean、Taiwan 和 Thai Buddhist(泰国佛历)。
预定义的掩码
预定义的掩码允许最终用户编辑有公共模式的日期/时间值。 标准掩码由标识了适当模式的单个字符组成。 在下表中列出了可用的掩码。
标准掩码 | 名称 | 说明 | 示例 Culture: 英语(美国) |
---|---|---|---|
d | 短日期模式 | 此掩码与由 DateTimeFormatInfo.ShortDatePattern 属性指定的模式相匹配。 | |
D | 长日期模式 | 此掩码与由 DateTimeFormatInfo.LongDatePattern 属性指定的模式相匹配。 | |
t | 短时间模式 | 此掩码与由 DateTimeFormatInfo.ShortTimePattern 属性指定的模式相匹配。 | |
T | 长时间模式 | 此掩码与由 DateTimeFormatInfo.LongTimePattern 属性指定的模式相匹配。 | |
f | 完整日期/时间模式(短时间) | 此掩码组合了长日期和短时间模式,由空格符分隔。 | |
F | 完整日期/时间模式(长时间) | 此掩码与由 DateTimeFormatInfo.FullDateTimePattern 属性指定的模式相匹配。 | |
g | 常规日期/时间模式(短时间) | 此掩码组合了短日期和短时间模式,由空格符分隔。 | |
G | 常规日期/时间模式(长时间) | 此掩码组合了短日期和长时间模式,由空格符分隔。 | |
M 或 m | 月日模式 | 此掩码与由 DateTimeFormatInfo.MonthDayPattern 属性指定的模式相匹配。 | |
R 或 r | RFC1123 模式 | 此掩码与由 DateTimeFormatInfo.RFC1123Pattern 属性指定的模式相匹配。 | |
s | 可排序的日期/时间模式;符合 ISO 8601 | 由掩码与由 DateTimeFormatInfo.SortableDateTimePattern 属性指定的模式相匹配。 | |
u | 通用的可排序日期/时间模式 | 此掩码与由 DateTimeFormatInfo.UniversalSortableDateTimePattern 属性指定的模式相匹配。 | |
Y 或 y | 年月模式 | 此掩码与由 DateTimeFormatInfo.YearMonthPattern 属性指定的模式相匹配。 |
自定义掩码
如果预定义掩码不符合特定的需求,则可以使用自定义掩码。 可以使用下列掩码说明符来创建用于编辑日期/时间值的自定义掩码。
掩码说明符 | 说明 |
---|---|
d | 月中日期的占位符。 如果月中日期只是一位数字 (1-9),则它被显示为一位数字。 注意,如果单独使用“d”说明符,而没有其他自定义说明符,则它被解释为特定的标准掩码 (短日期模式)。 如果“d”说明符与其他自定义说明符或“%”字符一起被传递,则它被解释为自定义掩码说明符。 |
dd | 月中日期的占位符。 如果月中日期只是一位数字 (1-9),则它被使用前导零格式化 (01-09)。 |
ddd | 显示当前日期(在一周内)的缩写名称。 缩写名称由当前 culture 的 DateTimeFormatInfo.AbbreviatedDayNames 属性确定。
此说明符表示的取值不能被编辑。 |
dddd (加任意数量的“d”字符) | 显示当前日期(在一周内)的完整名称。 日期的完整名称由当前 culture 的 DateTimeFormatInfo.DayNames 属性确定。
此说明符表示的取值不能被编辑。 |
f | 由一位数字表示的秒部分(十分之几秒)的占位符。 注意,如果单独使用“f”说明符,而没有其他自定义说明符,则它被解释为特定的标准掩码 (完整日期/时间模式)。 如果“f”说明符与其他自定义说明符或“%”字符一起被传递,则它被解释为自定义掩码说明符。 |
ff | 由两位数字表示的秒部分(百分之几秒)的占位符。 |
fff | 由三位数字表示的秒部分(毫秒)的占位符。 |
ffff | 显示四位数字的秒部分(万分之几秒)。 此说明符表示的取值不能被编辑。 |
fffff | 显示五位数字的秒部分(十万分之几秒)。 此说明符表示的取值不能被编辑。 |
ffffff | 显示六位数字的秒部分(百万分之几秒)。 此说明符表示的取值不能被编辑。 |
fffffff | 显示七位数字的秒部分(千万分之几秒)。 此说明符表示的取值不能被编辑。 |
g | 显示当前日期/时间值的纪元 (例如 A.D.)。 此说明符表示的取值不能被编辑。 |
h | 日期/时间值的小时部分的占位符,其范围是 1-12。 |
hh | 日期/时间值的小时部分的占位符,其范围是 1-12。 此模式插入两个占位符来输入一个值。 如果输入了单个数字,则它被以零前导。 |
H | 日期/时间值的小时部分的占位符,其范围是 0-23。 |
HH | 日期/时间值的小时部分的占位符,其范围是 0-23。 此模式插入两个占位符来输入一个值。 如果输入了单个数字,则它被以零前导。 |
m | 日期/时间值的分钟占位符,其范围是 0-59。 |
mm | 日期/时间值的分钟占位符,其范围是 0-59。 此模式插入两个占位符来输入一个值。 如果输入了单个数字,则它被以零前导。 |
M | 在此位置的月份占位符,其限度是 1-12 范围内的数字。 |
MM | 在此位置的月份占位符,其限度是 1-12 范围内的数字。 此模式插入两个占位符来输入一个值。 如果输入了单个数字,则它被以零前导。 |
MMM | 月份缩写名称的占位符。 月份缩写名称由当前 culture 的 DateTimeFormatInfo.AbbreviatedMonthNames 属性确定。 |
MMMM | 月份完整名称的占位符。 月份完整名称由当前 culture 的 DateTimeFormatInfo.MonthNames 属性确定。 |
s | 日期/时间值的秒部分的占位符,其范围是 0-59。 注意,如果单独使用“s”说明符,而没有其他自定义说明符,则它被解释为特定的标准掩码 (可排序的日期/时间模式)。 如果“s”说明符与其他自定义说明符或“%”字符一起被传递,则它被解释为自定义掩码说明符。 |
ss | 日期/时间值的秒部分的占位符,其范围是 0-59。 此模式插入两个占位符来输入一个值。 如果输入了单个数字,则它被以零前导。 |
t | 日期/时间值的 A.M./P.M. 指示符的首字符的占位符。 注意,如果单独使用“t”说明符,而没有其他自定义说明符,则它被解释为特定的标准掩码 (短时间模式)。 如果“t”说明符与其他自定义说明符或“%”字符一起被传递,则它被解释为自定义掩码说明符。 |
tt | 日期/时间值的 A.M./P.M. 指示符的占位符。 |
y | 输入日期/时间值年份的后两位数字的占位符。 注意,如果单独使用“y”说明符,而没有其他自定义说明符,则它被解释为特定的标准掩码 (年月模式)。 如果“y”说明符与其他自定义说明符或“%”字符一起被传递,则它被解释为自定义掩码说明符。 |
yy | 输入日期/时间值年份的后两位数字的占位符。 此模式插入两个占位符来输入一个值。 如果输入了单个数字,则它被以零前导。 |
yyyy | 输入包含世纪的日期/时间值年份部分的占位符。 |
z | 仅以整小时数来显示系统当前时区的时区偏移量。 偏移量始终显示为带有前导符号 (0 显示为“+0”),指明当前时区早于格林尼治标准时间的小时数 (+)、 或者晚于格林尼治标准时间的小时数 (-)。 取值范围是 -12 至 +13。 如果偏移量是单个数字 (0-9),则它显示为有适当前导符号的单个数字。
此说明符表示的取值不能被编辑。 |
zz | 仅以整小时数来显示系统当前时区的时区偏移量。 偏移量始终显示为带有前导或后接符号 (0 显示为“+00”),指明当前时区早于格林尼治标准时间的小时数 (+)、 或者晚于格林尼治标准时间的小时数 (-)。 取值范围是 -12 至 +13。 如果偏移量是单个数字 (0-9),则它显示为有适当前导符号的以前导零格式化的值 (01-09)。 此说明符表示的取值不能被编辑。 |
zzz | 以小时和分钟来显示系统当前时区的时区偏移量。 偏移量始终显示为带有前导或后接符号 (0 显示为“+00:00”),指明当前时区早于格林尼治标准时间的小时数 (+)、 或者晚于格林尼治标准时间的小时数 (-)。 取值范围是 -12:00 至 +13:00。 如果偏移量是单个数字 (0-9),则它显示为有适当前导符号的以前导零格式化的值 (01:00-09:00)。 此说明符表示的取值不能被编辑。 |
: | 时间分隔符。 实际的时间分隔符由当前 culture 的 DateTimeFormatInfo.TimeSeparator 属性确定。 |
/ | 日期分隔符。 实际的日期分隔符由当前 culture 的 DateTimeFormatInfo.DateSeparator 属性确定。 |
" abc " 或 ' abc ' | 用引号括起的字符串。 把由单引号或双引号括起的字符串原样插入到编辑框中。 此字符串不能被编辑。 |
% c | 把标准掩码说明符之一的 c 说明符解释为自定义掩码说明符。 注意,如果以单个字符单独使用某个掩码说明符,则它被解释为标准掩码说明符。 仅当掩码说明符由两个或两个以上字符组成时,它才被解释为自定义说明符。 为了使用与某个标准说明符相同的自定义说明符,应该在掩码中以 % 字符前导它。 |
\ c | 反斜杠被用作转义符。 它把后面跟随的字符原样插入到编辑框中。 |
任何其他字符 | 其他字符被原样插入到编辑框中。 |
最终用户功能
- 按下向上键和向下键时,递增或递减插入点指明的日期/时间值部分。 例如,如果“日”部分被编辑,则按下这些快捷键会改变“日”。 如果“月份”部分被编辑,则 (按下这些快捷键) 会改变“月份”。
- 滚动鼠标滑轮时,递增或递减插入点指明的日期/时间值部分 (与按下向上键和向下键类似)。
- 当月份的完整名称或缩写名称被编辑时,则可以通过键入月份名称的词首字母来选中特定的月份。 例如,按下“j”字符则选中“January”。 随后按下“j”键选中“June”,之后则是“July”。
- 当月份的完整名称或缩写名称被编辑时,则可以通过键入月份的序数 (1-12) 来选中特定的月份。
- 可以按下空格键,使插入点从当前位置移动到可编辑的日期/时间值的后续部分。
- 可以按下表示日期分隔符的字符,使插入点从当前位置移动到可编辑的日期值的后续部分。
- 可以按下表示时间分隔符的字符,使插入点从当前位置移动到可编辑的时间值的后续部分。
- 如果掩码要求使用四位数字输入年份 (“yyyy”掩码),则最终用户可以使用该年份的后两位 (或后一位) 数字来输入所需的年份。 自动根据当前 culture (请参阅 MSDN 中的 System.Globalization.Calendar.TwoDigitYearMax 主题) 确定世纪。 要插入属于一世纪的年份,则在输入年之前按下“0”字符。
示例
1. 掩码要求在首个位置输入年份,在第二个位置输入月份,在第三个位置输入“日”。 “-”字符用作日期分隔符:yyyy-MM-dd
2. 同一个掩码,但是使用月份的缩写名称来编辑月份。 另外,在取值的右侧显示日期 (在一周内的) 名称:yyyy-MMM-dd dddd
日期 (在一周内) 的名称不能被编辑。