Импорт выполняется во время компиляции.
Назначение переменной выполняется во время выполнения после компиляции, после чего импорт должен быть уже импортирован.
Итак, это невозможно. Лучшим решением было бы действительно использовать FQN в строке и инициализировать это.
$c = "$user\\$class";
$UserSpecificClass = new $c();
Метод setDate () устанавливает день объекта Date относительно начала текущего установленного месяца.
blockquote>Выше приведено в MDN .
Ваш код работает для первых 5 дат, но как только вы изменяете свою февральскую дату с помощью
-1
, он устанавливает день относительно текущего месяца, например, Февраль. Так что это превратится в январь (так как вы устанавливаете день на -1), то же самое произойдет на следующей итерации, и вы получите декабрь.Для простого исправления вы можете просто установить переменную
date
наnew Date()
в первой строке циклаfor
.
Проблема здесь заключается в использовании той же самой переменной date
в цикле. Вам нужно заново инициализировать его.
Как можно видеть в разделе Значение параметра в ссылке здесь . Нулевые и отрицательные значения в setDate()
устанавливают дату предыдущего месяца.
Следовательно, в setDate(0)
значение даты установлено на последний день февраля. Теперь, когда вы используете ту же переменную, setDate(-1)
берет предыдущий месяц с февраля, следовательно, вы получаете январь.
Вам нужно изменить код на что-то вроде этого:
generate() {
this.date_new = [];
var date1 = new Date();
for (var i = 0; i < 7; i++) {
// re-initialize date
var date = new Date();
date.setDate(date1.getDate() - i);
var a = date.toString();
var str = this.convert(a);
this.date_new.push(str);
}
}
Надеюсь, это поможет:)