Если вы действительно знаете, что это смещение UTC-4, тогда вам просто нужно переформатировать строку, чтобы она соответствовала ECMAScript формату даты-времени , что является упрощением ISO 8601 Расширенный формат.
new Date("2019-04-15T19:09:16-04:00")
Однако учтите, что Нью-Йорк работает по восточному поясному времени США, что на самом деле составляет летнее время для указанной вами даты и времени. Другими словами, это не UTC-4 (EST), а скорее UTC-5 (EDT). Так что для этого примера это должно быть:
new Date("2019-04-15T19:09:16-05:00")
Но что, если вы не знаете, какое смещение для данного часового пояса в конкретную дату и время? В конце концов, часовые пояса, переходы на летнее время и связанные с ними смещения отличаются во всем мире и меняются на протяжении всей истории. Поэтому нельзя просто предполагать, что у часового пояса есть одно число, которое является его смещением. (Подробнее см. «Часовой пояс! = Смещение» в теге часового пояса вики .)
В настоящее время JavaScript не может помочь вам в этом сам по себе. Вместо этого вам нужно будет использовать библиотеку , например, такую, на которую есть ссылки .
Например, используя Luxon , вы можете сделать следующее:
luxon.DateTime.fromISO("2019-04-15T19:09:16", { zone: "America/New_York" }).toJSDate()
В будущем мы надеемся решить эту проблему на языке JavaScript с помощью временных объектов - которые все еще находятся на стадии предложения ECMAScript.