I am working with Date Picker component and I am trying to get selected day from date picker to be start of day (midnight) in specific timezone (e.g. Europe/London). So for example if I select 2023-01-30 I want to get something like
Mon Jan 30 2023 00:00:00 GMT (London UK)
Currently output shows my local timezone at the end GMT-0500 (Eastern Standard Time) but I would like to have London one GMT
I am using date-fns to get startOfDay
const d = '2023-01-30';
const [year, month, day] = d.split('-');
const y = startOfDay(new Date(year, month - 1, day));
console.log('🚀 ~ file: ScheduleSection.js:102 ~ convertDateToUtc ~ y', y);
Actual Output: Mon Jan 30 2023 00:00:00 GMT-0500 (Eastern Standard Time)
Expected Output: Mon Jan 30 2023 00:00:00 GMT (London UK)
Since you have tags for date-fns and date-fns-tz, you can do what you want with those libraries. The following can be run at RunKit.com:
var dateFns = require('date-fns');
var dateFnsTz = require('date-fns-tz');
let date = '2014-06-25T00:00:00';
let timeZone = 'America/Los_Angeles';
// Parse timestamp for America/Los_Angeles
let utcDate = dateFnsTz.zonedTimeToUtc(date, timeZone);
// UTC equivalent: "2014-06-25T07:00:00.000Z"
console.log(utcDate.toISOString());
// Europe/London equivalent: "2014-06-25 08:00:00 GMT+1"
console.log(dateFnsTz.formatInTimeZone(utcDate,
'Europe/London', 'yyyy-MM-dd HH:mm:ss zzz'));
As RunKit doesn't support import, require is used instead.