почему даты не генерируются должным образом?

Импорт выполняется во время компиляции.

Назначение переменной выполняется во время выполнения после компиляции, после чего импорт должен быть уже импортирован.

Итак, это невозможно. Лучшим решением было бы действительно использовать FQN в строке и инициализировать это.

$c = "$user\\$class";

$UserSpecificClass = new $c();
0
задан quickSwap 4 March 2019 в 05:57
поделиться

2 ответа

Метод setDate () устанавливает день объекта Date относительно начала текущего установленного месяца.

Выше приведено в MDN .

Ваш код работает для первых 5 дат, но как только вы изменяете свою февральскую дату с помощью -1, он устанавливает день относительно текущего месяца, например, Февраль. Так что это превратится в январь (так как вы устанавливаете день на -1), то же самое произойдет на следующей итерации, и вы получите декабрь.

Для простого исправления вы можете просто установить переменную date на new Date() в первой строке цикла for.

0
ответ дан Fabian Küng 4 March 2019 в 05:57
поделиться

Проблема здесь заключается в использовании той же самой переменной 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);
    }
}

Надеюсь, это поможет:)

0
ответ дан Royson 4 March 2019 в 05:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: