Facebook
From Voluminous Leopard, 2 Days ago, written in JavaScript.
This paste is a reply to Aleksander Tsoy_Find Khronos day from Ivory Partdridge - view diff
Embed
Download Paste or View Raw
Hits: 31
  1.  
  2. function day(inner) {
  3.   let a = 0;
  4.   let b = 0;
  5.   let visocos = 0;
  6.   let arr = inner.split("."); // разбивка строки на массив
  7.  
  8.   if (arr[1] == 2 && arr[0] > 31) {
  9.     arr[0] = 31;
  10.   }
  11.   if (arr[1] != 2 && arr[0] > 30) {
  12.     arr[0] = 30;
  13.   }
  14.   if (arr[1] > 12) {
  15.     // не более 12 мес
  16.     arr[1] = 12;
  17.   }
  18.   if (arr[2] < 0) {
  19.     // год не отрицательное число
  20.     arr[2] = 0;
  21.   }
  22.   if (arr[2] > 4) {
  23.     if (arr[1] >= 3) {
  24.       visocos += Math.floor(arr[2] / 5);
  25.     } else {
  26.       visocos += Math.floor(arr[2] / 5);
  27.       if ((arr[1] < 3 && arr[2] == 5) || Math.floor(arr[2] / 1000) > 0) {
  28.         visocos -= 1;
  29.       }
  30.     }
  31.   }
  32.   if (arr[2] >= 100) {
  33.     visocos -= Math.floor(arr[2] / 100); // отнимаю высокосные дни каждых 100л.
  34.     if (arr[2] >= 500) {
  35.       visocos += Math.floor(arr[2] / 500); // добавляю высокосные дни за каждые 500л.
  36.     }
  37.   }
  38.   if (arr[2] > 0) {
  39.     // если год больше 0
  40.     a = arr[2] * 360; // умножить число на 360 дней.
  41.   }
  42.   if (arr[1] > 1) {
  43.     // если месяц больше 1
  44.     b = (arr[1] - 1) * 30; // число умножить на 30 дней.
  45.   }
  46.   let c = arr[0] * 1; // получаем кол-во дней кроме 0
  47.   let days = ["Среда", "Четв", "Пятн", "Суб", "Воск", "Пон", "Вторн"]; // записываем массив
  48.   let totalDays = a + b + c + visocos - 359;
  49.   let res = (a + b + c + visocos) % 7; // сумма год, мес, дни, высокосные дни получ остаток от деления
  50.   //  return days[res]
  51.   //  document.write(arr[0]     +  '.' + arr[1] + '.' + arr[2]  + ' => ' + totalDays + '<br />'
  52.   //  + days[res] + '<br />');
  53.   document.write(
  54.     days[res] +
  55.       " : " +
  56.       totalDays +
  57.       "<br />" +
  58.       "Высокосные: " +
  59.       visocos +
  60.       "<br />" +
  61.       "День: " +
  62.       arr[0] +
  63.       " Мес: " +
  64.       arr[1] +
  65.       " Год: " +
  66.       arr[2] +
  67.       "<br />" +
  68.       "<br />"
  69.   );
  70. }
  71.  
  72. day("24.08.1001");