diff --git a/CHANGELOG.md b/CHANGELOG.md
index f6de20655..77c3c059a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,6 +10,7 @@
### Features
* include documents in npm package for ai agents ([#960](https://github.com/WeBankFinTech/fes-design/issues/960)) ([3cc476c](https://github.com/WeBankFinTech/fes-design/commit/3cc476c81fb652c7fc3887884d99b46a02de0b74))
+* feat(date-picker): 支持精确到小时和分钟 ([#913](https://github.com/WeBankFinTech/fes-design/issues/913))
diff --git a/components/date-picker/__tests__/datehour-913.spec.ts b/components/date-picker/__tests__/datehour-913.spec.ts
new file mode 100644
index 000000000..79ea5f546
--- /dev/null
+++ b/components/date-picker/__tests__/datehour-913.spec.ts
@@ -0,0 +1,21 @@
+import { describe, expect, it } from 'vitest';
+import { PickerType, pickerFactory, DateHourMinutePicker } from '../pickerHandler';
+
+describe('datehour picker', () => {
+ it('should have datehour in PickerType', () => {
+ expect(PickerType.datehour).toBe('datehour');
+ });
+
+ it('DateHourMinutePicker should have correct format', () => {
+ const picker = new DateHourMinutePicker();
+ expect(picker.format).toBe('yyyy-MM-dd HH:mm');
+ expect(picker.name).toBe(PickerType.datehour);
+ expect(picker.hasTime).toBe(true);
+ });
+
+ it('pickerFactory should create DateHourMinutePicker for datehour type', () => {
+ const picker = pickerFactory(PickerType.datehour);
+ expect(picker).toBeInstanceOf(DateHourMinutePicker);
+ expect(picker.format).toBe('yyyy-MM-dd HH:mm');
+ });
+});
\ No newline at end of file
diff --git a/components/date-picker/pickerHandler.ts b/components/date-picker/pickerHandler.ts
index c66dd6628..f105ece4d 100644
--- a/components/date-picker/pickerHandler.ts
+++ b/components/date-picker/pickerHandler.ts
@@ -4,6 +4,7 @@ import type { DateObj } from './interface';
export const PickerType = {
date: 'date',
datetime: 'datetime',
+ datehour: 'datehour',
datemultiple: 'datemultiple',
daterange: 'daterange',
datetimerange: 'datetimerange',
@@ -62,6 +63,18 @@ export class DateTimePicker implements Picker {
}
}
+export class DateHourMinutePicker implements Picker {
+ name = PickerType.datehour;
+ confirmLang = 'datePicker.today';
+ placeholderLang = 'datePicker.selectDateTime';
+ format = 'yyyy-MM-dd HH:mm';
+ isRange = false;
+ hasTime = true;
+ getDateFromStr(val: string): Date {
+ return new Date(val);
+ }
+}
+
class DateRange {
getLeftActiveDate(rightActiveDate: number) {
const endDate = new Date(rightActiveDate);
@@ -198,6 +211,8 @@ export function pickerFactory(type: string): Picker {
return new DatePicker();
case PickerType.datetime:
return new DateTimePicker();
+ case PickerType.datehour:
+ return new DateHourMinutePicker();
case PickerType.datemultiple:
return new DateMultiplePicker();
case PickerType.daterange:
diff --git a/docs/.vitepress/components/datePicker/datehour.vue b/docs/.vitepress/components/datePicker/datehour.vue
new file mode 100644
index 000000000..8db56755e
--- /dev/null
+++ b/docs/.vitepress/components/datePicker/datehour.vue
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/.vitepress/components/datePicker/index.md b/docs/.vitepress/components/datePicker/index.md
index 91339299c..76bb2015d 100644
--- a/docs/.vitepress/components/datePicker/index.md
+++ b/docs/.vitepress/components/datePicker/index.md
@@ -44,6 +44,10 @@ app.use(DatePicker);
--DEFAULTTIME
+### 精确到小时和分钟
+
+--datehour
+
--CODE
## Props