const parseDate = (date?: string): string => {
    if (!date) {
        return '';
    }
    const dateValue: Date = new Date(Date.parse(date));
    return dateValue.toISOString().slice(0, -14);
};

const onDateChange = (newValue: string, setter: (newValue: string) => void, previousValue?: string ) => {
    if (newValue) {
        const newDate = new Date(newValue);
        const time = parseTime(previousValue);
        if (time !== '') {
            newDate.setHours(parseInt(time && time.split(':')[0]));
            newDate.setMinutes(parseInt(time && time.split(':')[1].split(' ')[0]));
        }
        setter(newDate.toISOString());
    }
};

const parseTime = (date?: string): string => {
    if (!date) {
        return '';
    }
    const dateValue: Date = new Date(Date.parse(date));
    let isAm = true;
    let hours = dateValue.getHours();
    if (hours > 12) {
        hours %= 12;
        isAm = false;
    }
    let minutes = dateValue.getMinutes().toString();
    if (minutes.length == 1) {
        minutes = '0' + minutes;
    }
    return `${hours}:${minutes} ${isAm ? 'AM' : 'PM'}`;
};