Я бы хотел использовать функции летнего времени и часового пояса luxon.js в сценарии оболочки, который я использую в оболочке mongodb.Это функция
DateTime.isInDST()
, за которой я работаю - в противном случае я согласен на
moment.js
и эквивалентную реализацию.
Среда выполнения - Mongo 3.6в докер-контейнере на linux VM Сценарии VirtualBOX, представленные из командной строки (изнутри cygwin csh)
Я вытащил локальную копию
https://moment.github.io/luxon/global-filled/luxon.js
, которая (я думал) предполагаетсячтобы были включены все зависимости.
Эта информация доступна скрипту через load ();оператор
Однако я получаю сообщение об ошибке
TypeError: "_cache.has is not a function"
Глядя на исходный файл, я вижу здесь строку обидчика - строка 2008.
if (typeof _cache !== "undefined") {
if (_cache.has(Class)) return _cache.get(Class);
_cache.set(Class, Wrapper);
}
....
}
объявлена переменная _cacheнесколько строк здесь раньше - строка 1998 года.
function _wrapNativeSuper(Class) {
var _cache = typeof Map === "function" ? new Map() : undefined;
...
}
Я предполагаю, что "Карта" была определена ранее.Поэтому я взломал код, чтобы он был
var _cache = undefined; //I read somewhere that it doesn't need to be pre-defined
....
Я также проверил весь свой код и не смог найти ничего, определенного как «Карта» - поэтому я не думаю, что существует локальное столкновение имен.
В этот момент я, кажется, хромаю.Я могу создавать экземпляры и получать доступ к функции
DateTime.local(); and
DateTime.toString();
и получать правильные значения UTC.
Обратите внимание, однако, вместо того, чтобы использовать «DateTime» в качестве глобальной переменной (как описано в документации) Я обнаружил, что должен был использовать
luxon.DateTime
(поскольку «luxon» - переменная, объявленная в источнике)
, однако, когда я кодирую
var now = luxon.DateTime.local();
var now_tz = now.setZone( "America/Los_Angeles" );
trace("time after tz:"+ now_tz.toString()+" reason:" +now_tz.invalidReason+ " explanation:"+now_tz.invalidExplanation);
trace("zone support is:"+luxon.Info.features().zones);
, я получаю
time after tz:Invalid DateTime reason:unsupported zone explanation:the zone "America/Los_Angeles" is not supported
zone support is:false
Какой тип подсказывает, что оболочка Mongodb не имеет поддержки зоны (если только ранние хаки не аннулировали поддержку этой зоны).
Мой вопрос: Как добавить поддержку зоны.И почему инстанцирование через luxon.js не работает так, как задокументировано.
Спасибо за любые предложения