date 日期

输入或选择日期的控件。

注意事项

  • 格式化分为:数据格式化表示表单数据和显示格式化显示数据(等同 nzFormat 值)

  • 所有 数据格式化 单位,参考 date-fns format(国内镜像:moment format

  • 指定 schema.format 则必须遵守 RFC3339 时间格式,否则都视为格式错误,默认的数据格式化规则:

    • date-time 默认 yyyy-MM-DDTHH:mm:ssZ,注意这里采用的是 type="datetime-local" 因此会涉及到时区问题

    • datefull-date 默认 yyyy-MM-dd

    • timefull-time 默认 HH:mm:ss

    • 非标准:week 默认 yyyy-WW

    • 非标准:month 默认 yyyy-MM

  • 不指定 schema.format 根据 schema.type 值按以下规则处理(允许通过全局配置替换)数据格式化:

    • string 默认 yyyy-MM-dd HH:mm:ss

    • number 默认 T 13位Unix Timestamp

代码演示

date 日期 - 图1

基础样例

最简单的用法。

  1. import { Component } from '@angular/core';
  2. import { SFDateWidgetSchema, SFSchema } from '@delon/form';
  3. import { NzMessageService } from 'ng-zorro-antd/message';
  4. @Component({
  5. selector: 'form-date-simple',
  6. template: ` <sf [schema]="schema" (formSubmit)="submit($event)" (formChange)="change($event)"></sf> `,
  7. })
  8. export class FormDateSimpleComponent {
  9. schema: SFSchema = {
  10. properties: {
  11. datetime: {
  12. type: 'string',
  13. format: 'date-time',
  14. },
  15. date: {
  16. type: 'string',
  17. format: 'date',
  18. },
  19. date_number: {
  20. type: 'number',
  21. ui: { widget: 'date' } as SFDateWidgetSchema,
  22. },
  23. year: {
  24. type: 'number',
  25. ui: { widget: 'date', mode: 'year', format: 'yyyy' } as SFDateWidgetSchema,
  26. },
  27. month: {
  28. type: 'string',
  29. format: 'month',
  30. },
  31. week: {
  32. type: 'string',
  33. format: 'week',
  34. },
  35. range: {
  36. type: 'string',
  37. ui: { widget: 'date', mode: 'range' } as SFDateWidgetSchema,
  38. },
  39. start: {
  40. type: 'string',
  41. ui: { widget: 'date', end: 'end' } as SFDateWidgetSchema,
  42. },
  43. end: {
  44. type: 'string',
  45. ui: { widget: 'date', end: 'end' } as SFDateWidgetSchema,
  46. },
  47. },
  48. };
  49. constructor(public msg: NzMessageService) {}
  50. submit(value: any) {
  51. this.msg.success(JSON.stringify(value));
  52. }
  53. change(value: {}) {
  54. console.log('change', value);
  55. }
  56. }

date 日期 - 图2

范围

一个简单的开始与结束日期,注意: end 依然需要定义对应的Schema,但会强制隐藏状态。

  1. import { Component } from '@angular/core';
  2. import { NzMessageService } from 'ng-zorro-antd/message';
  3. import { SFSchema, SFDateWidgetSchema } from '@delon/form';
  4. @Component({
  5. selector: 'form-date-range',
  6. template: `
  7. <sf [schema]="schema" (formSubmit)="submit($event)"></sf>
  8. `,
  9. })
  10. export class FormDateRangeComponent {
  11. schema: SFSchema = {
  12. properties: {
  13. start: {
  14. type: 'string',
  15. ui: { widget: 'date', end: 'end' } as SFDateWidgetSchema,
  16. default: new Date(),
  17. },
  18. end: {
  19. type: 'string',
  20. default: '2119-1-1',
  21. },
  22. },
  23. required: ['start'],
  24. };
  25. constructor(private msg: NzMessageService) {}
  26. submit(value: any) {
  27. this.msg.success(JSON.stringify(value));
  28. }
  29. }

API

schema 属性

成员说明类型默认值
[readOnly]禁用状态boolean-
[format]数据格式类型string-

ui 属性

参数说明类型默认值
[mode]渲染模式date,week,month,yeardate
[size]大小,等同 nzSizedefault,large,small-
[placeholder]在文字框中显示提示讯息string-
[format]数据格式化string-
[displayFormat]显示格式化,(等同 nzFormat 值)stringyyyy-MM-dd HH:mm:ss
[end]日期范围所对应的结束值 keystring-
[allowClear]是否显示清除按钮booleantrue
[className]选择器 classNamestring-
[locale]国际化配置object-
[popupStyle]额外的弹出日历样式object-
[dropdownClassName]额外的弹出日历 classNamestring-
[onOpenChange]弹出日历和关闭日历的回调(status: boolean) => void-
[disabledDate]不可选择的日期(current: Date) => boolean-
[disabledTime]不可选择的时间(current: Date) => { nzDisabledHours, nzDisabledMinutes, nzDisabledSeconds }-
[renderExtraFooter]在面板中添加额外的页脚string-
[showTime]增加时间选择功能,object 类型为 TimePickerOptionsobject,booleantrue
[showToday]是否展示“今天”按钮booleantrue
[onOk]点击确定按钮的回调(data: Date | Date[]) => void-
[change]时间发生变化的回调(data: Date | Date[]) => void-