I must convert a date time, given its time zone, year, month, day, hours and minutes to an ISO string.
For example, given the following parameters:
{
timeZone: 'Europe/Paris',
year: 2020,
month: 11,
day: 18,
hours: 14,
minutes: 44,
}
I want to build the ISO string corresponding: 2020-11-18T13:44:00.000Z (notice the hour shift there)
You can do this the other way around pretty easily, either with the Intl.DateTimeFormat or the toLocaleDateString/toLocaleTimeString methods, but this way I can't find a proper solution...
If I overlooked any source of information, please let me know.
EDIT (see comments):
The perk of using a time zone and not a GMT string, such a 'GMT +01:00', is that I won't have to handle time changes. As you may know, the time zone 'Europe/Paris' is 'GMT +01:00' in the winter but 'GMT +022:00' in the summer... And I can't find a proper way to map the timezone to any UTC offset
Thank you in advance for your help
SOLUTION:
As suggested below, using Luxon we can do
const timeObject = { day, month, year, hours, minutes, zone: timeZone };
const date = DateTime.fromObject(timeObject).toUTC().toString();
Matt also suggested the for now experimental Temporal feature.
Using Luxon (the successor to Moment).
Of course, you could simplify if your input object used the same field names as Luxon needs.