Поэтому решил набросать свой велосипед - https://github.com/studentIvan/LocalizedDate.JS
Восстановлено по большей части из старого загизпованного кода, поэтому некоторые переменные в дев версии уж очень короткие
Суть:
/**
* new LocalizedDate(SERVER_TIMEZONE_OFFSET, [LOCALE])
*
* integer SERVER_TIMEZONE - server timezone offset (e.g. 4 for Europe/Moscow)
* string LOCALE - user locale, 2 chars (e.g. ru, en)
* Only ru and en locale supported in this version
* For ua, kz and by locale set automatic as ru
* If LOCALE undefined - script will detect locale automatical
*
* Method - localize(SERVER_DATETIME_STRING)
*/
var ldt = new LocalizedDate(4); // timezone Europe/Moscow, locale autodetect
console.log(ldt.localize('2012-04-23 00:40:29'));
на момент написания этого поста мне вывело:
сегодня в 00:40
у меня +04:00, следовательно смещения быть не должно
То есть допустим я беру из бд datetime с временной зоной +04:00, отдаю юзеру как-нибудь так:
<span class="dtl10n">{{ mydatetime }}</span>
И жсом фильтрую как-то так:
var ldt = new LocalizedDate(4, 'ru');
$(".dtl10n").each(function() {
$(this).html(ldt.localize($(this).html()))
})