Я создаю простой скрипт, который показывает количество дней до конца месяца, чтобы продемонстрировать понимание того, как даты работают в Javascript. И это тоже хорошо, потому что у меня его явно нет.
Я хочу получить текущую дату и сравнить ее с последним днем месяца как date(this year, this month +1, day 0) - 1 day
, чтобы узнать, сколько осталось дней. Я мог бы построить массив, сообщающий, сколько дней в каждом месяце, но я должен иметь возможность использовать встроенное понимание дат для решения этой проблемы.
Для ожидаемого выхода, последний день этого месяца (31 августа) - сегодня (30 августа) = 1. Но я получаю 0.
Это то, что я имею до сих пор:
<p id="demo"></p>
<script>
var d = new Date();
var nxt = new Date(d.getFullYear(), d.getMonth() + 1, 0);
nxt.setDate(nxt.getDate() - 1);
document.getElementById("demo").innerHTML = nxt.getDay() - d.getDay();
</script>
На данный момент это 11 в AEST (GMT + 1000), где я нахожусь в случае, если это поможет. Смысл в том, чтобы сделать что-то, что будет работать где угодно и когда угодно.
Мой первый подозреваемый - это часовые пояса - я подумал, что это могло бы сработать, если бы я использовал все UTC или не использовал UTC. Похоже, это не так. Я пытался запросить значения UTC в разных местах, но, как ни странно, только кажется, что может увеличить погрешность, поэтому он возвращает -1.