Получилась вот такая функция с использованием
Intl.DateTimeFormat.
function guessDate(str) {
const f = new Intl.DateTimeFormat('en-US', {
timeZone: 'Europe/Moscow',
hour: '2-digit',
minute: '2-digit',
hour12: false,
});
for (const offset of ['+03', '+04', '+02']) {
const d = new Date(`${str}:00${offset}:00`)
if (str.endsWith(f.format(d))) {
// console.log(offset, '\t', str);
return d;
}
}
}
Пример результатов (из console.log):
+03 1980-06-01 12:00
+03 1980-12-01 12:00
+04 1981-06-01 12:00
+03 1981-12-01 12:00
+03 1991-06-01 12:00
+02 1991-12-01 12:00
+04 1992-06-01 12:00
+03 1992-12-01 12:00
+04 2011-06-01 12:00
+04 2011-12-01 12:00
+04 2014-06-01 12:00
+03 2014-12-01 12:00
+03 2015-06-01 12:00
+03 2015-12-01 12:00