Skip to content

Commit 63a044c

Browse files
fix: fix 12 hours format incorrect hour pass (#681)
* fix: fix 12 hours format incorrect hour pass * add test --------- Co-authored-by: Samandar Yusupov <[email protected]>
1 parent 072ca68 commit 63a044c

File tree

2 files changed

+29
-8
lines changed

2 files changed

+29
-8
lines changed

src/hooks/useTimeSelection.ts

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ export default function useTimeSelection<DateType>({
2828
const now = generateConfig.getNow();
2929
let newDate = value || now;
3030

31-
const mergedHour = newHour < 0 ? generateConfig.getHour(now) : newHour;
31+
const newFormattedHour = !use12Hours || !isNewPM ? newHour : newHour + 12;
32+
const mergedHour = newHour < 0 ? generateConfig.getHour(now) : newFormattedHour;
3233
let mergedMinute = newMinute < 0 ? generateConfig.getMinute(now) : newMinute;
3334
let mergedSecond = newSecond < 0 ? generateConfig.getSecond(now) : newSecond;
3435

@@ -53,13 +54,7 @@ export default function useTimeSelection<DateType>({
5354
}
5455
}
5556

56-
newDate = utilSetTime(
57-
generateConfig,
58-
newDate,
59-
!use12Hours || !isNewPM ? mergedHour : mergedHour + 12,
60-
mergedMinute,
61-
mergedSecond,
62-
);
57+
newDate = utilSetTime(generateConfig, newDate, mergedHour, mergedMinute, mergedSecond);
6358

6459
return newDate;
6560
};

tests/picker.spec.tsx

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -634,6 +634,32 @@ describe('Picker.Basic', () => {
634634
);
635635
});
636636

637+
it('should change 12 hours format correctly', () => {
638+
const onTimeChange = jest.fn();
639+
const { getByText } = render(
640+
<MomentPicker
641+
disabledTime={() => ({
642+
disabledHours: () => [0],
643+
disabledMinutes: (hour) => {
644+
onTimeChange(hour);
645+
return [0];
646+
},
647+
disabledSeconds: () => [0],
648+
})}
649+
value={getMoment('2000-01-01 21:40:40')}
650+
format="YYYY-MM-DD hh:mm:ss A"
651+
use12Hours
652+
showTime
653+
open
654+
/>,
655+
);
656+
657+
fireEvent.click(getByText('PM'));
658+
659+
expect(onTimeChange).not.toBeCalledWith(9);
660+
expect(onTimeChange).toBeCalledWith(21);
661+
});
662+
637663
it('should show warning when minute step is invalid', () => {
638664
expect(errorSpy).not.toBeCalled();
639665
const { container } = render(<MomentPicker picker="time" minuteStep={9} />);

0 commit comments

Comments
 (0)