Как перевести эту строку кода на человеческий язык? - PullRequest
0 голосов
/ 03 июля 2018

Привет. Я пытаюсь изменить начальный рабочий день этого календаря с воскресенья на понедельник. Но я не понимаю, что происходит в линии var k = .... Что эта строка кода пытается сказать на человеческом языке? https://codepen.io/xmark/pen/WQaXdv?editors=1010

// June 2018
var k = lastDay_of_LastMonth - firstDay_of_Month+1;
27


//_____________________________________________________________________
// TEST

var lastDay_of_LastMonth = new Date(2018, 5, 0); // May 31st 2018
document.write('Today is: ' + lastDay_of_LastMonth.toLocaleString());
// Today is: 5/31/2018, 12:00:00 AM

var firstDay_of_Month = new Date(2018, 5, 1); // June 1st 2018
firstDay_of_Month."getDay()";
5

// June 2018
var k = lastDay_of_LastMonth - firstDay_of_Month+1;

lastDay_of_LastMonth.setDate(lastDay_of_LastMonth.getDate() - 6);
document.write('<br>X days ago was: ' + lastDay_of_LastMonth.toLocaleString());
// X days ago was: 5/25/2018, 12:00:00 AM

//_____________________________________________________________________

// June 2018
27 = 31 - 5+1;

Я вижу из этой темы, что этот код вычисляет (Дата - Дни), считая дни назад. Но я не могу понять, что он делает на человеческом языке для календарного кода. Разве математика 31-(5+1) = 25 не означает, что она вернется на 6 дней назад, почему я возвращаю значение 27? Вычесть дни из даты в JavaScript

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Порядок операций на этом языке дает равный приоритет операциям сложения и вычитания.

Другими словами, он использует PEMDAS.

Так и будет 31-5: 26

Тогда 26 + 1: 27

0 голосов
/ 03 июля 2018

Из codepen , который вы прикрепили, разработчик использует k, чтобы получить дни за пределами текущего месяца, которые должны появиться в календаре (т. Е. Если наш месяц начинается во вторник, а затем в воскресенье) & Понедельник в предыдущем месяце, но нам нужно получить «числа дня месяца» этих дней), теперь они используют k в двух случаях:

1: получить дни предыдущего месяца var k = lastDayOfLastMonth - firstDayOfMonth+1;

2: получить дни следующего месяца:

else if ( i == lastDateOfMonth ) {
  var k=1;
  for(dow; dow < 6; dow++) {
    html += '<td class="not-current">' + k + '</td>';
    k++;
  }
}

В первом случае они вычисляют разницу между последним днем ​​последнего месяца и первым днем ​​этого месяца, +1 здесь, потому что вы работаете с индексами.

Во втором случае можно с уверенностью сказать, что в каждом месяце есть 1-6, поэтому они повторяют до 6, чтобы заполнить последнюю неделю в календаре.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...