* Converts a UTC time to the same wall clock time in the target timezone.
         * For example:
         * - 2024-03-24 00:00:00 UTC -> 2024-03-24 00:00:00 GMT-3 (returns 2024-03-24T03:00:00Z)
         * - 2024-03-24 14:30:00 UTC -> 2024-03-24 14:30:00 GMT-3 (returns 2024-03-24T17:30:00Z)
         *
         * @param {Date | string | number} utcTime - The UTC time to convert
         * @param {string} targetTimeZone - The IANA timezone string (e.g., 'America/Sao_Paulo')
         * @returns {Date} - A Date object representing the same wall clock time in the target timezone (stored in UTC)
         */
        preserveTimeInTimezone(utcTime, targetTimeZone) {
            // Ensure we have a Date object
            const utcDate = new Date(utcTime);

            // Get the time components from the original UTC date
            const day = utcDate.getUTCDate();
            const month = utcDate.getUTCMonth();
            const year = utcDate.getUTCFullYear();
            const hours = utcDate.getUTCHours();
            const minutes = utcDate.getUTCMinutes();
            const seconds = utcDate.getUTCSeconds();
            const ms = utcDate.getUTCMilliseconds();

            // Create a formatter to get the timezone offset
            const formatter = new Intl.DateTimeFormat('en-US', {
                timeZone: targetTimeZone,
                timeZoneName: 'longOffset',
                year: 'numeric',
                month: 'numeric',
                day: 'numeric',
                hour: 'numeric',
                minute: 'numeric',
                second: 'numeric',
                hour12: false
            });

            // Format the UTC date to get the target timezone date and offset
            const parts = formatter.formatToParts(utcDate);

            // Get the timezone offset
            const timeZonePart = parts.find(part => part.type === 'timeZoneName');
            const offsetMatch = timeZonePart.value.match(/GMT([+-])(\d{2}):(\d{2})/);

            if (!offsetMatch) {
                throw new Error('Unable to parse timezone offset');
            }

            const [, sign, offsetHours, offsetMinutes] = offsetMatch;
            const offsetInMilliseconds = (
                parseInt(offsetHours, 10) * 60 * 60 * 1000 +
                parseInt(offsetMinutes, 10) * 60 * 1000
            ) * (sign === '+' ? -1 : 1);

            // Return the date adjusted by the offset
            return new Date(utcDate.getTime() + offsetInMilliseconds);
        },

        /**
         * Calculates the UTC timestamp for the start of the day (00:00) in a specified timezone.
         *
         * @param {string} timeZone - The IANA timezone string (e.g., 'Europe/Rome').
         * @param {Date | string} [date=new Date()] - The date for which to calculate the start of the day. Defaults to the current date.
         * @returns {Date} - A JavaScript Date object representing 00:00 in UTC for the specified timezone.
         */
        getStartOfDayInTimezone( timeZone,inputDateUTC) {
            // Get the date parts in the desired time zone
            const formatter = new Intl.DateTimeFormat('en-US', {
                timeZone: timeZone,
                year: 'numeric',
                month: 'numeric',
                day: 'numeric',
            });

            const parts = formatter.formatToParts(inputDateUTC);
            const year = parts.find((part) => part.type === 'year').value;
            const month = parts.find((part) => part.type === 'month').value;
            const day = parts.find((part) => part.type === 'day').value;

            // Create a Date object representing midnight in the desired time zone
            // Since we can't set the time zone of a Date object directly,
            // we need to calculate the difference between the desired time zone and UTC

            // Get the UTC timestamp for the start of the day in the desired time zone
            const dateInDesiredTZ = new Date(Date.UTC(year, month - 1, day));

            // Get the offset (in minutes) between UTC and the desired time zone at the given date
            const timezoneOffset = this.getTimezoneOffsetInMinutes(timeZone, dateInDesiredTZ);

            // Adjust the date to represent the correct UTC time for the start of the day in the desired time zone
            const startOfDayUTC = new Date(dateInDesiredTZ.getTime() - timezoneOffset * 60000);

            return startOfDayUTC;
        },

        getTimezoneOffsetInMinutes(timeZone, date) {
            // Use the Intl API to get the time zone offset at the specified date
            const utcDate = new Date(date.toLocaleString('en-US', { timeZone: 'UTC' }));
            const tzDate = new Date(date.toLocaleString('en-US', { timeZone: timeZone }));
            const offset = (tzDate - utcDate) / 60000; // Convert milliseconds to minutes
            return offset;
        },

Can you provide a new function that converts from timezone to utc? Also rename the one provided