I came across this same issue, and this is the solution I came up with, if you can get an IANA tz database name like the one you mentioned:
var myTimezoneName = "Asia/Colombo";
// Generating the formatted text
var options = {timeZone: myTimezoneName, timeZoneName: "short"};
var dateText = Intl.DateTimeFormat([], options).format(new Date);
// Scraping the numbers we want from the text
var timezoneString = dateText.split(" ")[1].slice(3);
// Getting the offset
var timezoneOffset = parseInt(timezoneString.split(':')[0])*60;
// Checking for a minutes offset and adding if appropriate
if (timezoneString.includes(":")) {
var timezoneOffset = timezoneOffset + parseInt(timezoneString.split(':')[1]);
}
It's not a very nice solution, but it does the job without importing anything. It relies on the output format of the Intl.DateTimeFormat being consistent, which it should be, but that's a potential caveat.