Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   День недели, как вывести на экран? (https://javascript.ru/forum/misc/77226-den-nedeli-kak-vyvesti-na-ehkran.html)

Besprizornik 08.04.2019 09:51

День недели, как вывести на экран?
 
Как вывести в двух спанах расположеных на пустых выпадающих списках сегодняшний день недели?
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<html><head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8"/>
<title>Сегодняшние день недели и дата через элементы формы на JS.</title>
<style>
body { color: #0000a0; font: 14px Georgia, 'Times New Roman', Times, serif; }
h1 { color: #ffffff; font: 16px Georgia, 'Times New Roman', Times, serif; text-shadow: 1px 1px #0005ff, -1px 1px #0005ff, 1px -1px #0005ff, -1px -1px #0005ff, 1px 0px #0005ff, 0px 1px #0005ff, -1px 0px #0005ff, 0px -1px #0005ff; -webkit-animation: h-pulsare 1.35s linear infinite; animation: h-pulsare 1.35s linear infinite;}
div { border: 1px solid #999999; padding: 10px; margin-bottom: 10px; }
select { height: 26px; margin: 0; }
input { height: 22px; padding-left: 5px; }
select, input { background: #d7d7ff; color: #0000a0; border: 1px solid #0000a0; font: 16px Georgia, 'Times New Roman', Times, serif; line-height: 0; margin: 5px 3px; }
div.day-grig, div.day-ulian { display: block; padding: 0; margin: 0 auto -10px 2px; border: 1px solid transparent; width: 136px; height: 26px; }
select.day_gr, select.day_ul { position: relative; bottom: 0px; right: 2px; margin: 0 auto -10px 2px; width: 136px; }
span.day_week { position: relative; bottom: 22px; right: -5px; font: 16px Georgia, 'Times New Roman', Times, serif; }
@-webkit-keyframes h-pulsare { 0%, 100% { color: #ffffff; text-shadow: 1px 1px #0005ff, -1px 1px #0005ff, 1px -1px #0005ff, -1px -1px #0005ff, 1px 0px #0005ff, 0px 1px #0005ff, -1px 0px #0005ff, 0px -1px #0005ff; } 50% { color: #d7d7ff; text-shadow: 1px 1px #0005ff, -1px 1px #0005ff, 1px -1px #0005ff, -1px -1px #0005ff, 1px 0px #0005ff, 0px 1px #0005ff, -1px 0px #0005ff, 0px -1px #0005ff, 0 0 30px #ff0055; } } @keyframes h-pulsare { 0%, 100% { color: #ffffff; text-shadow: 1px 1px #0005ff, -1px 1px #0005ff, 1px -1px #0005ff, -1px -1px #0005ff, 1px 0px #0005ff, 0px 1px #0005ff, -1px 0px #0005ff, 0px -1px #0005ff; } 50% { color: #d7d7ff; text-shadow: 1px 1px #0005ff, -1px 1px #0005ff, 1px -1px #0005ff, -1px -1px #0005ff, 1px 0px #0005ff, 0px 1px #0005ff, -1px 0px #0005ff, 0px -1px #0005ff, 0 0 30px #ff0055; } }
</style>
<script> 
var d = new Date(), dayweek = 'Воскресенье Понедельник Вторник Среда Четверг Пятница Суббота'
document.addEventListener('DOMContentLoaded', function() { 
document.querySelector('#date_gr').options[d.getDate()].selected = true;
document.querySelector('#month_gr').options[d.getMonth()+1].selected = true;
document.querySelector('#year_gr').value = d.getFullYear();
d.setDate(d.getDate() - 13);
document.querySelector('#date_ul').options[d.getDate()].selected = true;
document.querySelector('#month_ul').options[d.getMonth()+1].selected = true;
document.querySelector('#year_ul').value = d.getFullYear();
});
</script>
</head><body>
<h1>Конвертирование даты из григорианского календаря в юлианский и обратно.</h1>
<div class="seg_gr">

Сегодня:<br/>
<div class="day-grig"><select class="day_gr" id="day_gr">
</select>
<span class="day_week"></span></div><br>
<select class="date_gr" id="date_gr">
<option value="0"></option><option value="1">01</option><option value="2">02</option><option value="3">03</option><option value="4">04</option><option value="5">05</option><option value="6">06</option><option value="7">07</option><option value="8">08</option><option value="9">09</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option><option value="17">17</option><option value="18">18</option><option value="19">19</option><option value="20">20</option><option value="21">21</option><option value="22">22</option><option value="23">23</option><option value="24">24</option><option value="25">25</option><option value="26">26</option><option value="27">27</option><option value="28">28</option><option value="29">29</option><option value="30">30</option><option value="31">31</option>
</select> 
<select class="month_gr" id="month_gr">
<option value="0"></option><option value="1">января</option><option value="2">февраля</option><option value="3">марта</option><option value="4">апреля</option><option value="5">мая</option><option value="6">июня</option><option value="7">июля</option><option value="8">августа</option><option value="9">сентября</option><option value="10">октября</option><option value="11">ноября</option><option value="12">декабря</option>
</select> 
<input class="year_gr" id="year_gr" type="number" size="4" name="year" min="0" max="2400" step="1" value=""> <i>года</i>.<br/>
по григорианскому календарю<br/>(<i>новый стиль</i>)
</div>
<div class="ul">
Сегодня:<br/>
<div class="day-ulian"><select class="day_ul" id="day_ul">
</select><span class="day_week"></span></div><br>
<select class="date_ul" id="date_ul">
<option value="0"></option><option value="1">01</option><option value="2">02</option><option value="3">03</option><option value="4">04</option><option value="5">05</option><option value="6">06</option><option value="7">07</option><option value="8">08</option><option value="9">09</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option><option value="17">17</option><option value="18">18</option><option value="19">19</option><option value="20">20</option><option value="21">21</option><option value="22">22</option><option value="23">23</option><option value="24">24</option><option value="25">25</option><option value="26">26</option><option value="27">27</option><option value="28">28</option><option value="29">29</option><option value="30">30</option><option value="31">31</option>
</select> 
<select class="month_ul" id="month_ul">
<option value="0"></option><option value="1">января</option><option value="2">февраля</option><option value="3">марта</option><option value="4">апреля</option><option value="5">мая</option><option value="6">июня</option><option value="7">июля</option><option value="8">августа</option><option value="9">сентября</option><option value="10">октября</option><option value="11">ноября</option><option value="12">декабря</option>
</select> 
<input class="year_ul" id="year_ul" type="number" size="4" name="year" min="0" max="2400" step="1" value=""> <i>года</i>.<br/>
по юлианскому календарю<br/>(<i>старый стиль</i>)
</div>
<br/><br/>
</body></html>

Rise 08.04.2019 11:41

Пример не запускается как надо, замени маркеры JS в квадратных скобках на HTML, у тебя же html разметка присутствует, а не просто один js. Форматирование на javascript.ru.
var d = new Date(), dayweek = ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'][d.getDay()];
[].forEach.call(document.querySelectorAll('.day_week'), function (el) { el.textContent = dayweek });

Besprizornik 08.04.2019 12:28

Rise,
исправил маркеры в первом посте

исправил код, но не работает, кто не понял вопроса надо вывести текстом сегодняшний день недели в обоих спанах с классом "day_week",пустые вып списки служат вместо фонового изображения

<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<html><head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8"/>
<title>Сегодняшние день недели и дата через элементы формы на JS.</title>
<style>
body { color: #0000a0; font: 14px Georgia, 'Times New Roman', Times, serif; }
h1 { color: #ffffff; font: 16px Georgia, 'Times New Roman', Times, serif; text-shadow: 1px 1px #0005ff, -1px 1px #0005ff, 1px -1px #0005ff, -1px -1px #0005ff, 1px 0px #0005ff, 0px 1px #0005ff, -1px 0px #0005ff, 0px -1px #0005ff; -webkit-animation: h-pulsare 1.35s linear infinite; animation: h-pulsare 1.35s linear infinite;}
div { border: 1px solid #999999; padding: 10px; margin-bottom: 10px; }
select { height: 26px; margin: 0; }
input { height: 22px; padding-left: 5px; }
select, input { background: #d7d7ff; color: #0000a0; border: 1px solid #0000a0; font: 16px Georgia, 'Times New Roman', Times, serif; line-height: 0; margin: 5px 3px; }
div.day-grig, div.day-ulian { display: block; padding: 0; margin: 0 auto -10px 2px; border: 1px solid transparent; width: 136px; height: 26px; }
select.day_gr, select.day_ul { position: relative; bottom: 0px; right: 2px; margin: 0 auto -10px 2px; width: 136px; }
span.day_week { position: relative; bottom: 22px; right: -5px; font: 16px Georgia, 'Times New Roman', Times, serif; }
@-webkit-keyframes h-pulsare { 0%, 100% { color: #ffffff; text-shadow: 1px 1px #0005ff, -1px 1px #0005ff, 1px -1px #0005ff, -1px -1px #0005ff, 1px 0px #0005ff, 0px 1px #0005ff, -1px 0px #0005ff, 0px -1px #0005ff; } 50% { color: #d7d7ff; text-shadow: 1px 1px #0005ff, -1px 1px #0005ff, 1px -1px #0005ff, -1px -1px #0005ff, 1px 0px #0005ff, 0px 1px #0005ff, -1px 0px #0005ff, 0px -1px #0005ff, 0 0 30px #ff0055; } } @keyframes h-pulsare { 0%, 100% { color: #ffffff; text-shadow: 1px 1px #0005ff, -1px 1px #0005ff, 1px -1px #0005ff, -1px -1px #0005ff, 1px 0px #0005ff, 0px 1px #0005ff, -1px 0px #0005ff, 0px -1px #0005ff; } 50% { color: #d7d7ff; text-shadow: 1px 1px #0005ff, -1px 1px #0005ff, 1px -1px #0005ff, -1px -1px #0005ff, 1px 0px #0005ff, 0px 1px #0005ff, -1px 0px #0005ff, 0px -1px #0005ff, 0 0 30px #ff0055; } }
</style>
<script> 
var d = new Date(), dayweek = ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'][d.getDay()];
[].forEach.call(document.querySelectorAll('.day_week'), function (el) { el.textContent = dayweek });
document.addEventListener('DOMContentLoaded', function() { 
document.querySelector('#date_gr').options[d.getDate()].selected = true;
document.querySelector('#month_gr').options[d.getMonth()+1].selected = true;
document.querySelector('#year_gr').value = d.getFullYear();
d.setDate(d.getDate() - 13);
document.querySelector('#date_ul').options[d.getDate()].selected = true;
document.querySelector('#month_ul').options[d.getMonth()+1].selected = true;
document.querySelector('#year_ul').value = d.getFullYear();
});
</script>
</head><body>
<h1>Конвертирование даты из григорианского календаря в юлианский и обратно.</h1>
<div class="seg_gr">
Сегодня:<br/>
<div class="day-grig"><select class="day_gr" id="day_gr">
</select>
<span class="day_week"></span></div><br>
<select class="date_gr" id="date_gr">
<option value="0"></option><option value="1">01</option><option value="2">02</option><option value="3">03</option><option value="4">04</option><option value="5">05</option><option value="6">06</option><option value="7">07</option><option value="8">08</option><option value="9">09</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option><option value="17">17</option><option value="18">18</option><option value="19">19</option><option value="20">20</option><option value="21">21</option><option value="22">22</option><option value="23">23</option><option value="24">24</option><option value="25">25</option><option value="26">26</option><option value="27">27</option><option value="28">28</option><option value="29">29</option><option value="30">30</option><option value="31">31</option>
</select> 
<select class="month_gr" id="month_gr">
<option value="0"></option><option value="1">января</option><option value="2">февраля</option><option value="3">марта</option><option value="4">апреля</option><option value="5">мая</option><option value="6">июня</option><option value="7">июля</option><option value="8">августа</option><option value="9">сентября</option><option value="10">октября</option><option value="11">ноября</option><option value="12">декабря</option>
</select> 
<input class="year_gr" id="year_gr" type="number" size="4" name="year" min="0" max="2400" step="1" value=""> <i>года</i>.<br/>
по григорианскому календарю<br/>(<i>новый стиль</i>)
</div>
<div class="ul">
Сегодня:<br/>
<div class="day-ulian"><select class="day_ul" id="day_ul">
</select><span class="day_week"></span></div><br>
<select class="date_ul" id="date_ul">
<option value="0"></option><option value="1">01</option><option value="2">02</option><option value="3">03</option><option value="4">04</option><option value="5">05</option><option value="6">06</option><option value="7">07</option><option value="8">08</option><option value="9">09</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option><option value="17">17</option><option value="18">18</option><option value="19">19</option><option value="20">20</option><option value="21">21</option><option value="22">22</option><option value="23">23</option><option value="24">24</option><option value="25">25</option><option value="26">26</option><option value="27">27</option><option value="28">28</option><option value="29">29</option><option value="30">30</option><option value="31">31</option>
</select> 
<select class="month_ul" id="month_ul">
<option value="0"></option><option value="1">января</option><option value="2">февраля</option><option value="3">марта</option><option value="4">апреля</option><option value="5">мая</option><option value="6">июня</option><option value="7">июля</option><option value="8">августа</option><option value="9">сентября</option><option value="10">октября</option><option value="11">ноября</option><option value="12">декабря</option>
</select> 
<input class="year_ul" id="year_ul" type="number" size="4" name="year" min="0" max="2400" step="1" value=""> <i>года</i>.<br/>
по юлианскому календарю<br/>(<i>старый стиль</i>)
</div>
<br/><br/>
</body></html>

Rise 08.04.2019 12:37

Строка с querySelectorAll должна быть там же где остальные querySelector, должны быть отступы нормальные это называется форматирование кода, тогда бы интуитивно это было очевидно. И можно было исправить пример в первом посте, а не дублировать одно и тоже.

Besprizornik 08.04.2019 12:56

Rise,
благодарю, разобрался работает, а тот скрипт ссылку на который ты давал, и второй скрипт найденый в гугле, не всегда правильно конвертируют, там не учитывается день весеннего равноденствия, с какого числа надо отнимать на день больше, и просто с начала года 1.01.1900 отнимается не правильно.

Rise 08.04.2019 13:20

Равноденствие это когда день равен ночи вроде, не понятно при чем здесь число дней. Ну вот скрипт конвертирует 01.01.1900 в 20.12.1899, вроде всё верно -12 дней, что не так?

Besprizornik 08.04.2019 13:35

я скачал этот скрипт и у меня отнимало 13 дней в феврале 1900 г. вместо 12, плюс там много ненужного мне, исламские календари, юлианские дни и прочее, а мне надо только григорианский и юлианский календари.

Rise 08.04.2019 13:47

Ну вот февраль 01.02.1900, 15.02.1900, 28.02.1900, разница 12. Возможно вам кажется, что на переходах 29 февраля 1900 (юлианская дата) и 13 марта 1900 (григорианская дата) разница 13 дней, вы ошибаетесь, потому что 29 февраля как бы проглатывает 1 марта и получается разница 12.

Besprizornik 08.04.2019 13:49

ладно, пока пойду в сад надо вишни посадить, позже зайду.

Besprizornik 09.04.2019 22:39

Rise,
в любом случае в тех скриптах куча ненужных мне систем летоисчислений (календарей) и ненужных мне вычислений (юлианский день и т.д.) мне надо только два календаря, григорианский и юлианский, конечно было бы неплохо охватить весь период юлианского, но встаёт вопрос как добавить ещё один селект для выбора периода нашей эры и до н. э. и как вводить даты до н. э. (1 янв 45 г. до н. э.) и второй вопрос как правильно отнимать нужное количество дней с учётом 29 февраля в высокосные годы хх00 по юлианскому календарю.

Besprizornik 10.04.2019 12:35

Народ, кто может составить функцию которая будет отнимать/прибавлять к григорианской дате правильное количество дней, с учётом того что в юлианском календаре каждый четвёртый год високосный, а в григорианском года кратные 100 простые а кратные 400 високосные

Besprizornik 10.04.2019 12:47

Вот код страницы вместе с таблицей

<!DOCTYPE html>
<html><head>
<meta charset=utf-8">
<title>Конвертирование даты из григорианского календаря в юлианский и обратно.</title>
<style>
body { color: #0000a0; font: 14px Georgia, 'Times New Roman', Times, serif; }
h1 { color: #ffffff; font: 16px Georgia, 'Times New Roman', Times, serif; text-shadow: 1px 1px #0005ff, -1px 1px #0005ff, 1px -1px #0005ff, -1px -1px #0005ff, 1px 0px #0005ff, 0px 1px #0005ff, -1px 0px #0005ff, 0px -1px #0005ff; -webkit-animation: h-pulsare 1.35s linear infinite; animation: h-pulsare 1.35s linear infinite;}
div { border: 1px solid #999999; padding: 10px; margin-bottom: 10px; min-width: 340px; width: 100%; }
div.date { white-space: nowrap; }
select { height: 26px; margin: 0; }
input { height: 22px; padding-left: 5px; }
select, input { background: #d7d7ff; color: #0000a0; border: 1px solid #0000a0; font: 16px Georgia, 'Times New Roman', Times, serif; line-height: 0; margin: 5px 3px; }
div.day-grig, div.day-ulian { display: block; padding: 0; margin: 0 auto -10px 2px; border: 1px solid transparent; width: 136px; height: 26px; position: relative; }
select.day_gr, select.day_ul { position: relative; bottom: 0px; right: 2px; margin: 0 auto -10px 2px; width: 136px; }
span.day_week { position: relative; right: 136.5px; font: 16px Georgia, 'Times New Roman', Times, serif; }
@-webkit-keyframes h-pulsare { 0%, 100% { color: #ffffff; text-shadow: 1px 1px #0005ff, -1px 1px #0005ff, 1px -1px #0005ff, -1px -1px #0005ff, 1px 0px #0005ff, 0px 1px #0005ff, -1px 0px #0005ff, 0px -1px #0005ff; } 50% { color: #d7d7ff; text-shadow: 1px 1px #0005ff, -1px 1px #0005ff, 1px -1px #0005ff, -1px -1px #0005ff, 1px 0px #0005ff, 0px 1px #0005ff, -1px 0px #0005ff, 0px -1px #0005ff, 0 0 30px #ff0055; } } @keyframes h-pulsare { 0%, 100% { color: #ffffff; text-shadow: 1px 1px #0005ff, -1px 1px #0005ff, 1px -1px #0005ff, -1px -1px #0005ff, 1px 0px #0005ff, 0px 1px #0005ff, -1px 0px #0005ff, 0px -1px #0005ff; } 50% { color: #d7d7ff; text-shadow: 1px 1px #0005ff, -1px 1px #0005ff, 1px -1px #0005ff, -1px -1px #0005ff, 1px 0px #0005ff, 0px 1px #0005ff, -1px 0px #0005ff, 0px -1px #0005ff, 0 0 30px #ff0055; } }
</style>
<script> 
var d = new Date(), dayweek = ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'][d.getDay()];
document.addEventListener('DOMContentLoaded', function() { 
[].forEach.call(document.querySelectorAll('.day_week'), function (el) { el.textContent = dayweek });
document.querySelector('#date_gr').options[d.getDate()].selected = true;
document.querySelector('#month_gr').options[d.getMonth()+1].selected = true;
document.querySelector('#year_gr').value = d.getFullYear();
document.querySelector('#era_gr').options.selected = true;
d.setDate(d.getDate() - 13);
document.querySelector('#date_ul').options[d.getDate()].selected = true;
document.querySelector('#month_ul').options[d.getMonth()+1].selected = true;
document.querySelector('#year_ul').value = d.getFullYear();
document.querySelector('#era_ul').options.selected = true;
});
</script>
</head><body>
<h1>Конвертирование даты из григорианского календаря в юлианский и обратно.</h1>
<div class="date">
Сегодня:<br/>
<div class="day-grig"><select class="day_gr" id="day_gr">
</select>
<span class="day_week"></span></div><br>
<select class="date_gr" id="date_gr">
<option value="1">01</option><option value="2">02</option><option value="3">03</option><option value="4">04</option><option value="5">05</option><option value="6">06</option><option value="7">07</option><option value="8">08</option><option value="9">09</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option><option value="17">17</option><option value="18">18</option><option value="19">19</option><option value="20">20</option><option value="21">21</option><option value="22">22</option><option value="23">23</option><option value="24">24</option><option value="25">25</option><option value="26">26</option><option value="27">27</option><option value="28">28</option><option value="29">29</option><option value="30">30</option><option value="31">31</option>
</select> 
<select class="month_gr" id="month_gr">
<option value="1">января</option><option value="2">февраля</option><option value="3">марта</option><option value="4">апреля</option><option value="5">мая</option><option value="6">июня</option><option value="7">июля</option><option value="8">августа</option><option value="9">сентября</option><option value="10">октября</option><option value="11">ноября</option><option value="12">декабря</option>
</select> 
<input class="year_gr" id="year_gr" type="number" size="4" name="year" min="0" max="2400" step="1" value=""> <i>г</i>. 
<select class="era_gr" id="era_gr"> 
<option value="-">до н. э.</option> <option value="">н. э.</option>
</select><br/>
по григорианскому календарю<br/>(<i>новый стиль</i>)
</div>
<div class="date">
Сегодня:<br/>
<div class="day-ulian"><select class="day_ul" id="day_ul">
</select>
<span class="day_week"></span></div><br>
<select class="date_ul" id="date_ul">
<option value="1">01</option><option value="2">02</option><option value="3">03</option><option value="4">04</option><option value="5">05</option><option value="6">06</option><option value="7">07</option><option value="8">08</option><option value="9">09</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option><option value="17">17</option><option value="18">18</option><option value="19">19</option><option value="20">20</option><option value="21">21</option><option value="22">22</option><option value="23">23</option><option value="24">24</option><option value="25">25</option><option value="26">26</option><option value="27">27</option><option value="28">28</option><option value="29">29</option><option value="30">30</option><option value="31">31</option>
</select> 
<select class="month_ul" id="month_ul">
<option value="1">января</option><option value="2">февраля</option><option value="3">марта</option><option value="4">апреля</option><option value="5">мая</option><option value="6">июня</option><option value="7">июля</option><option value="8">августа</option><option value="9">сентября</option><option value="10">октября</option><option value="11">ноября</option><option value="12">декабря</option>
</select> 
<input class="year_ul" id="year_ul" type="number" size="4" name="year" min="0" max="2400" step="1" value=""> <i>г</i>. 
<select class="era_ul" id="era_ul"> 
<option value="-">до н. э.</option> <option value="">н. э.</option>
</select><br/>
по юлианскому календарю<br/>(<i>старый стиль</i>)
</div>
<div>
Выберите нужную вам дату и нажмите на кнопку „Смотреть“...<br/> 
<button type="button">Смотреть</button><br/> 
При нажатии на кнопку „Сбросить“ покажет сегодняшнюю дату...<br/>
<button type=" reset">Сбросить</button>
</div>
<table align="center" bordercolor="#b8b8b8" border="1" width="100%" cellspacing="3" cellpadding="10">
<tr><td>Разница (дней)</td><td>Период (по пролептическому григорианскому календарю)</td></tr>
<tr><td>+2</td><td>27.02.101 г. до н. э. — 27.02.100 г.</td></tr>
<tr><td>+1</td><td>28.02.100 г.— 28.02.200 г.</td></tr>
<tr><td>0</td><td>1.03.200 г.— 1.03.300 г.</td></tr>
<tr><td>-1</td><td>2.03.300 г.— 2.03.500 г.</td></tr>
<tr><td>-2</td><td>3.03.500 г.— 3.03.600 г.</td></tr>
<tr><td>-3</td><td>4.03.600 г.— 4.03.700 г.</td></tr>
<tr><td>-4</td><td>5.03.700 г.— 5.03.900 г.</td></tr>
<tr><td>-5</td><td>6.03.900 г.— 6.03.1000 г.</td></tr>
<tr><td>-6</td><td>7.03.1000 г.— 7.03.1100 г.</td></tr>
<tr><td>-7</td><td>8.03.1100 г.— 8.03.1300 г.</td></tr>
<tr><td>-8</td><td>9.03.1300 г.— 9.03.1400 г.</td></tr>
<tr><td>-9</td><td>10.03.1400 г.— 10.03.1500 г.</td></tr>
<tr><td>-10</td><td>11.03.1500 г.— 14.10.1582 г.</td></tr>
<tr><td>Разница (дней)</td><td>Период (по григорианскому календарю)</td></tr>
<tr><td>-10</td><td>15.10.1582 г. — 11.03.1700 г.</td></tr>
<tr><td>-11</td><td>12.03.1700 г.— 12.03.1800 г.</td></tr>
<tr><td>-12</td>< <td>13.03.1800 г.— 13.03.1900 г.</td></tr>
<tr><td>-13</td><td>14.03.1900 г.— 14.03.2100 г.</td></tr>
<tr><td>-14</td><td>15.03.2100 г.— 15.03.2200 г.</td></tr>
<tr><td>-15</td><td>16.03.2200 г.— 16.03.2300 г.</td></tr>
</table>
</body></html>

Besprizornik 10.04.2019 19:58

Rise,
а 1.01.45г до н. э. это new Date(-45,0,1) ?

Блондинка 10.04.2019 21:28

Besprizornik, смотри тут

Rise 11.04.2019 14:47

Цитата:

Сообщение от Besprizornik
а 1.01.45г до н. э. это new Date(-45,0,1) ?

Да, только это будет пролептическая григорианская дата, Date работает только в этой системе. И нумерация года будет астрономическая.

Besprizornik 11.04.2019 15:00

как правильно присвоить атрибут "selected" нужной опции в списке с выбором эры? и почему сейчас в исправленном коде (12ый пост) выводится не сегодняшняя дата?

Besprizornik 11.04.2019 15:18

Цитата:

Сообщение от Rise (Сообщение 506373)
И нумерация года будет астрономическая.

а можно подробнее с этого места? что это за зверь такой "астрономическая нумерация года"?

Rise 11.04.2019 16:22

Gregorian & Julian converter via JDN (Julian Day Number)
 
Перенесено сюда.

Besprizornik 12.04.2019 21:54

Rise,
попробовал перевести скрипт на русский язык, и подогнать под себя, правда получается не очень, при попытке посмотреть 01.01.45 г. до н. э. получается н. э. и вопрос из названия темы так и остался открытым, как вывести дважды день недели текстом
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Конвертировать дату из григорианского календаря в юлианский и обратно.</title>
<style>
body, div, span, select, input, button { font: 16px serif; }
div { padding : 5px; margin: 0 5px 5px 5px; border: 1px solid #999; }
.position { display: inline-block; padding: 0; margin: 0 0 5px 0; position: relative; border: none; }
.wDay { width: 136px; }
.weekday { display: inline-block; position: relative; right: 132px; top : 1px; }
.date { white-spage: nowrap; padding: 0; margin: 0 0 5px 0; border: none; }

</style>
</head>
<body>
<form name="converter">
    <div>
    <span>Сегодня:</span><br>
    <div class="position">
   <select name="wDay" class="wDay"></select>
    <span class="weekday"></span>
    </div>
    <div class="date">
    <select name="gDay"></select>
    <select name="gMonth"></select>
    <input type="number" name="gYear" size="5" min="-4713">
    <i>г.</i>
    <select name="gEra"></select></div>
по григорианскому календарю<br>(<i>новый стиль</i>).<br>
    <input type="button" name="gCalc" value="Смотреть"> 
    <button type="button" class="express" value="g_n_o_w_ce">Сбросить</button>
    </div>
    <div>
    <span>Сегодня:</span><br>
    <div class="position">
   <select name="wDay" class="wDay"></select>
    <span class="weekday"></span>
    </div>
    <div class="date">
    <select name="jDay"></select>
    <select name="jMonth"></select>
    <input type="number" name="jYear" size="5" min="-4712">
    <i>г.</i>
    <select name="jEra"></select></div>
по юлианскому календарю<br>(<i>старый стиль</i>).<br>
    <input type="button" name="jCalc" value="Смотреть"> 
    <button type="button" class="express" value="g_n_o_w_ce">Сбросить</button>
    </div>
    <div>
    Впервые григорианский календарь был введён папой римским Григорием XIII в католических странах  с 5 октября 1582 года взамен прежнего юлианского: следующим днём после четверга 4 октября стала <button type="button" class="express" value="g_15_10_1582_ce">пятница 15 октября 1582 г. н. э.</button>. Григорианский календарь используется в большинстве государств и стран мира. В литературе также применяется название — Новый стиль.
      </div>
      <div>
    Пролептический григорианский календарь (предваряющий григорианский календарь, от др.-греч. πρόληψις «предвосхищение») — календарь, расширяющий григорианский календарь на период до его введения 15 октября 1582 года.
      </div>
      <div>
	    Юлиа́нский  календа́рь — календарь, разработанный группой александрийских астрономов во главе с Созигеном. Календарь назван в честь Юлия Цезаря, по указу которого был введен в Римской империи с <button type="button" class="express" value="j_1_1_45_bce">1 января 45 г. до н. э.</button> Год по юлианскому календарю начинается 1 января, так как именно в этот день с 153 года до н. э. избранные комициями консулы вступали в должность. Юлианский календарь заменил старый римский календарь и основывался на астрономической культуре эллинистического Египта.
</div>
</form>
<script>
document.addEventListener('DOMContentLoaded', function () {
// https://en.wikipedia.org/wiki/Julian_day#Julian_day_number_calculation
// The algorithms are valid for JDN >= 0, Gregorian >= 24.11.-4713, Julian >= 01.01.-4712
function gregorianToJdn(d, m, y) {
    return tr((1461 * (y + 4800 + tr((m - 14) / 12))) / 4) +
           tr((367 * (m - 2 - 12 * tr((m - 14) / 12))) / 12) -
           tr((3 * tr((y + 4900 + tr((m - 14) / 12)) / 100)) / 4) + d - 32075;
}
function julianToJdn(d, m, y) {
    return 367 * y - tr((7 * (y + 5001 + tr((m - 9) / 7))) / 4) + tr((275 * m) / 9) + d + 1729777;
}
function jdnToJulianOrGregorian(j, to) { // to: true (julian) false (gregorian)
    var f = (to) ? (j + 1401) : (j + 1363 + tr((tr((4 * j + 274277) / 146097) * 3) / 4));
    var e = 4 * f + 3, h = 5 * tr((e % 1461) / 4) + 2;
    var d = tr((h % 153) / 5) + 1, m = ((tr(h / 153) + 2) % 12) + 1, y = tr(e / 1461) - 4716 + tr((14 - m) / 12);
    return { d: d, m: m, y: y }; 
}
function jdnToWeekDay(j) { return (j % 7) + 1; }
function tr(n) { return n - n % 1; } // truncate (for integer division)
// -- wiki end --
var C = document.converter;
// options
var wdays = ['Понедельник','Вторник','Среда','Четверг','Пятница','Суббота','Воскресенье'];
for (var o = '', i = 0; i < wdays.length; i++) o += '<option value="' + (i + 1) + '">' + wdays[i] + '</option>';
C.wDay.innerHTML = o;
for (var o = '', i = 1; i <= 31; i++) o += '<option value="' + i  + '">' + i + '</option>';
C.gDay.innerHTML = C.jDay.innerHTML = o;
var months = ['января','февраля','марта','апреля','мая','июня','июля','августа','сентября','октября','ноября','декабря'];
for (var o = '', i = 0; i < months.length; i++) o += '<option value="' + (i + 1) + '">' + months[i] + '</option>';
C.gMonth.innerHTML = C.jMonth.innerHTML = o;
var eras = ['н. э.','до н. э.'], _eras = ['н. э.','до н. э.'];
for (var o = '', i = 0; i < eras.length; i++) o += '<option value="' + _eras[i] + '">' + eras[i] + '</option>';
C.gEra.innerHTML = C.jEra.innerHTML = o;
// -- options end --
C.gCalc.onclick = function () {
    var gd = +C.gDay.value, gm = +C.gMonth.value, gy = historicalToAstronomical(+C.gYear.value, C.gEra.value);
    var jdn = gregorianToJdn(gd, gm, gy), wd = jdnToWeekDay(jdn), jd = jdnToJulianOrGregorian(jdn, true);
    var jy = astronomicalToHistorical(jd.y);
    C.wDay.value = wd, C.jDay.value = jd.d, C.jMonth.value = jd.m, C.jYear.value = jy.y, C.jEra.value = jy.e;
    onUpdateAll(jdn);
};
C.jCalc.onclick = function () {
    var jd = +C.jDay.value, jm = +C.jMonth.value, jy = historicalToAstronomical(+C.jYear.value, C.jEra.value);
    var jdn = julianToJdn(jd, jm, jy), wd = jdnToWeekDay(jdn), gd = jdnToJulianOrGregorian(jdn, false);
    var gy = astronomicalToHistorical(gd.y);
    C.wDay.value = wd, C.gDay.value = gd.d, C.gMonth.value = gd.m, C.gYear.value = gy.y, C.gEra.value = gy.e;
    onUpdateAll(jdn);
};
function initDate(c, d, m, y, e) {
    if (d + m + y == 'now') { var n = new Date(); d = n.getDate(), m = n.getMonth() + 1, y = n.getFullYear(); }
    C[c + 'Day'].value = d, C[c + 'Month'].value = m, C[c + 'Year'].value = y, C[c + 'Era'].value = e;
    C[c + 'Calc'].onclick();
}
function historicalToAstronomical(y, e) { // e: 'ce' or 'bce'
    e = (y < 1) ? 'bce' : e;
    return ((e == 'bce') && y > 0) ? (1 - y) : y;
}
function astronomicalToHistorical(y) {
    var e = (y < 1) ? 'bce' : 'ce';
    return { y: (e == 'bce') ? -(y - 1) : y, e: e };
}
for (var ess = C.querySelectorAll('.express'), es, i = 0; i < ess.length; i++) {
     es = ess[i], es.onclick = Function.prototype.apply.bind(initDate, null, es.value.split('_'));
}
initDate('g', 'n', 'o', 'w', 'ce');
function onUpdateAll(jdn) {
    console.log('JDN:', jdn);
    console.assert(jdn >= 2299161, 'Proleptic: Gn < 15.10.1582 CE');
    console.assert(jdn >= 1704987, 'Proleptic: Jn < 01.01.45 BCE');
    console.assert(jdn >= 0, 'Invalid: Gn < 24.11.4714 BCE, Jn < 01.01.4713 BCE');
}
});
</script>
for (var o = '', i = 0; i < wdays.length; i++) o += '<option value="' + (i + 1) + '">' + wdays[i] + '</option>';
C.wDay.innerHTML = o;
for (var o = '', i = 1; i <= 31; i++) o += '<option value="' + i  + '">' + i + '</option>';
C.gDay.innerHTML = C.jDay.innerHTML = o;
</body>
</html>

Rise 12.04.2019 22:39

_eras не надо трогать, если в html два select с name="gwDay" и name="jwDay", тогда в js оба C.wDay.value = wd надо заменить на C.gwDay.value = C.jwDay.value = wd, а C.wDay.innerHTML = o на C.gwDay.innerHTML = C.jwDay.innerHTML = o

Besprizornik 12.04.2019 23:46

Цитата:

Сообщение от Rise (Сообщение 506462)
если в html два select с name="gwDay" и name="jwDay", тогда в js оба C.wDay.value = wd надо заменить на C.gwDay.value = C.jwDay.value = wd, а C.wDay.innerHTML = o на C.gwDay.value = C.jwDay.value = o

с эрами разобрался, а со списком дней недели не получилось, да немного не так надо, надо в строки 21 и 37 в <span class="weekday"></span> вывести текстом день недели, если пользователь введёт и дату и день недели которые несоответствуют друг другу, и какую роль играет выбор дня недели? зачем делать список с выбором если правильнее просто вывести текстом.

Besprizornik 13.04.2019 00:29

Цитата:

Сообщение от Besprizornik
кто не понял вопроса надо вывести текстом сегодняшний день недели в обоих спанах с классом "day_week",пустые вып списки служат вместо фонового изображения

вот я как бы пробовал объяснить

Цитата:

Сообщение от laimas
Besprizornik, приводить количество дней месяца к текущему месяцу

и в этом вопросе я в принципе полностью согласен, просто раньше считал преждевременно это решать пока дата не конвертируется правильно

Rise 13.04.2019 17:38

Цитата:

Сообщение от Besprizornik
зачем делать список с выбором

Ну во 1-х это красиво, во 2-х если надо чтобы список не раскрывался можно добавить атрибут disabled, либо атрибут readonly и css-правило select[readonly] option { display:none; }.

Besprizornik 13.04.2019 21:27

Rise,
так я сделал пустой список, и поверх него отпозиционировал спан, так чтобы выглядело словно это текст опции, задал ширину списка для опции с самым длинным текстом, всё выглядит словно день недели находится в списке а не поверх него, вопрос как сейчас вывести текстом день недели

Rise 13.04.2019 22:49

Такое ощущение что с каждым постом ты тупеешь всё больше) хотя должно быть вроде наоборот, то js-код пишешь вне тэга script, теперь вот эти кульбиты со спан. Может до тебя туго доходит, но я это имел ввиду, это выглядит и работает так как тебе и надо, нажми Посмотреть!
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>select[readonly] option { display:none; }</style>
</head>
<body>

<select readonly>
    <option>1</option>
    <option>2</option>
</select>

<select disabled>
    <option>1</option>
    <option>2</option>
</select>

</body>
</html>

Besprizornik 14.04.2019 13:10

Rise,
а мне кажется что мы оба немного ступили, в html select пустой, все option подставляются скриптом, и нужной option присваивается атрибут selected, так ведь?
а если вместо этого подставить только одну option из семи а остальные не показывать, будет то что надо.

Besprizornik 14.04.2019 13:34

Rise,
сделал так,
Цитата:

Сообщение от Rise (Сообщение 506462)
_eras не надо трогать, если в html два select с name="gwDay" и name="jwDay", тогда в js оба C.wDay.value = wd надо заменить на C.gwDay.value = C.jwDay.value = wd, а C.wDay.innerHTML = o на C.gwDay.value = C.jwDay.value = o

но день недели не показывает, и при нажатии на кнопку "01.01.45г до н.э. юлианская дата подставляется в форму, но не конвертируется в григорианскую.

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Конвертировать дату из григорианского календаря в юлианский и обратно.</title>
<style>
body, div, span, select, input, button { font: 16px serif; }
div { padding : 5px; margin: 0 5px 5px 5px; border: 1px solid #999; }
.position { display: inline-block; padding: 0; margin: 0 0 5px 0; position: relative; border: none; }
.wDay { width: 136px; }
.weekday { display: inline-block; position: relative; right: 132px; top : 1px; }
.date { white-spage: nowrap; padding: 0; margin: 0 0 5px 0; border: none; }
</style>
</head>
<body>
<form name="converter">
    <div>
    <span>Сегодня:</span><br>
    <div class="position">
   <select name="gwDay" class="wDay"></select>
    <span class="weekday"></span>
    </div>
    <div class="date">
    <select name="gDay"></select>
    <select name="gMonth"></select>
    <input type="number" name="gYear" size="5" min="-4713">
    <i>г.</i>
    <select name="gEra"></select></div>
по григорианскому календарю<br>(<i>новый стиль</i>).<br>
    <input type="button" name="gCalc" value="Смотреть"> 
    <button type="button" class="express" value="g_n_o_w_ce">Сбросить</button>
    </div>
    <div>
    <span>Сегодня:</span><br>
    <div class="position">
   <select name="jwDay" class="wDay"></select>
    <span class="weekday"></span>
    </div>
    <div class="date">
    <select name="jDay"></select>
    <select name="jMonth"></select>
    <input type="number" name="jYear" size="5" min="-4712">
    <i>г.</i>
    <select name="jEra"></select></div>
по юлианскому календарю<br>(<i>старый стиль</i>).<br>
    <input type="button" name="jCalc" value="Смотреть"> 
    <button type="button" class="express" value="g_n_o_w_ce">Сбросить</button>
    </div>
    <div>
    Впервые григорианский календарь был введён папой римским Григорием XIII в католических странах  с 5 октября 1582 года взамен прежнего юлианского: следующим днём после четверга 4 октября стала <button type="button" class="express" value="g_15_10_1582_ce">пятница 15 октября 1582 г. н. э.</button>. Григорианский календарь используется в большинстве государств и стран мира. В литературе также применяется название — Новый стиль.
      </div>
      <div>
    Пролептический григорианский календарь (предваряющий григорианский календарь, от др.-греч. πρόληψις «предвосхищение») — календарь, расширяющий григорианский календарь на период до его введения 15 октября 1582 года.
      </div>
      <div>
	    Юлиа́нский  календа́рь — календарь, разработанный группой александрийских астрономов во главе с Созигеном. Календарь назван в честь Юлия Цезаря, по указу которого был введен в Римской империи с <button type="button" class="express" value="j_1_1_45_bce">1 января 45 г. до н. э.</button> Год по юлианскому календарю начинается 1 января, так как именно в этот день с 153 года до н. э. избранные комициями консулы вступали в должность. Юлианский календарь заменил старый римский календарь и основывался на астрономической культуре эллинистического Египта.
</div>
</form>
<script>
document.addEventListener('DOMContentLoaded', function () {
// https://en.wikipedia.org/wiki/Julian_day#Julian_day_number_calculation
// The algorithms are valid for JDN >= 0, Gregorian >= 24.11.-4713, Julian >= 01.01.-4712
function gregorianToJdn(d, m, y) {
    return tr((1461 * (y + 4800 + tr((m - 14) / 12))) / 4) +
           tr((367 * (m - 2 - 12 * tr((m - 14) / 12))) / 12) -
           tr((3 * tr((y + 4900 + tr((m - 14) / 12)) / 100)) / 4) + d - 32075;
}
function julianToJdn(d, m, y) {
    return 367 * y - tr((7 * (y + 5001 + tr((m - 9) / 7))) / 4) + tr((275 * m) / 9) + d + 1729777;
}
function jdnToJulianOrGregorian(j, to) { // to: true (julian) false (gregorian)
    var f = (to) ? (j + 1401) : (j + 1363 + tr((tr((4 * j + 274277) / 146097) * 3) / 4));
    var e = 4 * f + 3, h = 5 * tr((e % 1461) / 4) + 2;
    var d = tr((h % 153) / 5) + 1, m = ((tr(h / 153) + 2) % 12) + 1, y = tr(e / 1461) - 4716 + tr((14 - m) / 12);
    return { d: d, m: m, y: y }; 
}
function jdnToWeekDay(j) { return (j % 7) + 1; }
function tr(n) { return n - n % 1; } // truncate (for integer division)
// -- wiki end --
var C = document.converter;
// options
var wdays = ['Понедельник','Вторник','Среда','Четверг','Пятница','Суббота','Воскресенье'];
for (var o = '', i = 0; i < wdays.length; i++) o += '<option value="' + (i + 1) + '">' + wdays[i] + '</option>';
C.gwDay.value = C.jwDay.value = o
for (var o = '', i = 1; i <= 31; i++) o += '<option value="' + i  + '">' + i + '</option>';
C.gDay.innerHTML = C.jDay.innerHTML = o;
var months = ['января','февраля','марта','апреля','мая','июня','июля','августа','сентября','октября','ноября','декабря'];
for (var o = '', i = 0; i < months.length; i++) o += '<option value="' + (i + 1) + '">' + months[i] + '</option>';
C.gMonth.innerHTML = C.jMonth.innerHTML = o;
var eras = ['н. э.','до н. э.'], _eras = ['ce','bce'];
for (var o = '', i = 0; i < eras.length; i++) o += '<option value="' + _eras[i] + '">' + eras[i] + '</option>';
C.gEra.innerHTML = C.jEra.innerHTML = o;
// -- options end --
C.gCalc.onclick = function () {
    var gd = +C.gDay.value, gm = +C.gMonth.value, gy = historicalToAstronomical(+C.gYear.value, C.gEra.value);
    var jdn = gregorianToJdn(gd, gm, gy), wd = jdnToWeekDay(jdn), jd = jdnToJulianOrGregorian(jdn, true);
    var jy = astronomicalToHistorical(jd.y);
    C.gwDay.value = C.jwDay.value = wd, C.jDay.value = jd.d, C.jMonth.value = jd.m, C.jYear.value = jy.y, C.jEra.value = jy.e;
    onUpdateAll(jdn);
};
C.jCalc.onclick = function () {
    var jd = +C.jDay.value, jm = +C.jMonth.value, jy = historicalToAstronomical(+C.jYear.value, C.jEra.value);
    var jdn = julianToJdn(jd, jm, jy), wd = jdnToWeekDay(jdn), gd = jdnToJulianOrGregorian(jdn, false);
    var gy = astronomicalToHistorical(gd.y);
    C.wDay.value = wd, C.gDay.value = gd.d, C.gMonth.value = gd.m, C.gYear.value = gy.y, C.gEra.value = gy.e;
    onUpdateAll(jdn);
};
function initDate(c, d, m, y, e) {
    if (d + m + y == 'now') { var n = new Date(); d = n.getDate(), m = n.getMonth() + 1, y = n.getFullYear(); }
    C[c + 'Day'].value = d, C[c + 'Month'].value = m, C[c + 'Year'].value = y, C[c + 'Era'].value = e;
    C[c + 'Calc'].onclick();
}
function historicalToAstronomical(y, e) { // e: 'ce' or 'bce'
    e = (y < 1) ? 'bce' : e;
    return ((e == 'bce') && y > 0) ? (1 - y) : y;
}
function astronomicalToHistorical(y) {
    var e = (y < 1) ? 'bce' : 'ce';
    return { y: (e == 'bce') ? -(y - 1) : y, e: e };
}
for (var ess = C.querySelectorAll('.express'), es, i = 0; i < ess.length; i++) {
     es = ess[i], es.onclick = Function.prototype.apply.bind(initDate, null, es.value.split('_'));
}
initDate('g', 'n', 'o', 'w', 'ce');
function onUpdateAll(jdn) {
    console.log('JDN:', jdn);
    console.assert(jdn >= 2299161, 'Proleptic: Gn < 15.10.1582 CE');
    console.assert(jdn >= 1704987, 'Proleptic: Jn < 01.01.45 BCE');
    console.assert(jdn >= 0, 'Invalid: Gn < 24.11.4714 BCE, Jn < 01.01.4713 BCE');
}
});
</script>
</body>

</html>

Rise 14.04.2019 16:29

Цитата:

Сообщение от Besprizornik
нужной option присваивается атрибут selected

Где ты там хоть одно слово selected нашел? Есть свойство value для этого.
Цитата:

Сообщение от Besprizornik
подставить только одну option из семи а остальные не показывать, будет то что надо.

У тебя что в посте 26 остальные option показывает?
Цитата:

Сообщение от Besprizornik
сделал так

Не сделал, у меня написано про "оба".

Besprizornik 14.04.2019 19:47

Цитата:

Сообщение от Rise (Сообщение 506523)
У тебя что в посте 26 остальные option показывает?

в 26 посте? с <select readonly> да показывает две опции

а <select disabled> меняет цвет, что получается не красиво как ты выразился.

Цитата:

Сообщение от Rise (Сообщение 506523)
Не сделал, у меня написано про "оба".

а можно чуть подробнее, какие именно номера строк в 28 посте пропустил?

Rise 14.04.2019 22:22

Цитата:

Сообщение от Besprizornik
с <select readonly> да показывает две опции

В старых браузерах может не работать display:none для option. Обнови браузер.
Цитата:

Сообщение от Besprizornik
а <select disabled> меняет цвет

Это можно исправить стилями, так же как ты делал select-ы фиолетовыми.
Цитата:

Сообщение от Besprizornik
какие именно номера строк в 28 посте пропустил?

В текстовых редакторах есть функции Найти и Заменить текст, давай ты их освоишь.

Besprizornik 14.04.2019 23:07

Цитата:

Сообщение от Rise
В старых браузерах может не работать display:none для option. Обнови браузер.

обновить браузер несложно, сложнее заставить всех посетителей это сделать, а скорее всего даже невозможно.

Цитата:

Сообщение от Rise
В текстовых редакторах есть функции Найти и Заменить текст, давай ты их освоишь.

нашёл 105 строку, сейчас при нажатии на кнопку 01.01 45г до н.э. конвертируется, но селект с днем недели пуст

Rise 15.04.2019 00:35

Цитата:

Сообщение от Besprizornik
сложнее заставить всех посетителей это сделать

Сейчас такая тенденция, что браузеры обновляются автоматически, из настроек убрали отключение обновления. Так что, если посетителю нравится страдать от своего устаревшего браузера, то это его личный выбор.
Цитата:

Сообщение от Besprizornik
но селект с днем недели пуст

Ну опечатка, мог бы догадаться, C.wDay.innerHTML = o на C.gwDay.innerHTML = C.jwDay.innerHTML = o

Besprizornik 15.04.2019 12:01

Цитата:

Сообщение от Rise (Сообщение 506534)
Сейчас такая тенденция, что браузеры обновляются автоматически, из настроек убрали отключение обновления. Так что, если посетителю нравится страдать от своего устаревшего браузера, то это его личный выбор.

Неужели так сложно вывести одну единственную опцию, а лишние скрыть, или это нельзя сделать с помощью яваскрипт?

Цитата:

Сообщение от Rise (Сообщение 506534)
Ну опечатка, мог бы догадаться, C.wDay.innerHTML = o на C.gwDay.innerHTML = C.jwDay.innerHTML = o

C.wDay.innerHTML = o на C.gwDay.innerHTML = C.jwDay.innerHTML = o ? или Days? не показывает день недели а не число, скорее надо
C.wDays.innerHTML = o на C.gwDays.innerHTML = C.jwDays.innerHTML = o

Rise 15.04.2019 15:40

Цитата:

Сообщение от Besprizornik
это нельзя сделать с помощью яваскрипт?

Можно, но это не значит что надо постоянно редактировать js, когда это можно сделать через css. Вчера примеры с обычным списком дней недели, сегодня список с одной опцией, завтра просто поле вывода, а послезавтра снова список со всеми опциями, потому что раньше ты считал преждевременно это решать. Поэтому я как кандидат в экстрасенсы, оставлю тебе обычный список, так как его можно легко стилизовать в любое из этих твоих состояний без редактирования js.
Цитата:

Сообщение от Besprizornik
или Days? не показывает день недели а не число

Типа стоит "день недели" в единственной числе, поэтому мы напишем Days во множественном. И где здесь логика?

Besprizornik 15.04.2019 21:27

Цитата:

Сообщение от Rise (Сообщение 506566)
Можно, но это не значит что надо постоянно редактировать js, когда это можно сделать через css. Вчера примеры с обычным списком дней недели, сегодня список с одной опцией, завтра просто поле вывода, а послезавтра снова список со всеми опциями, потому что раньше ты считал преждевременно это решать. Поэтому я как кандидат в экстрасенсы, оставлю тебе обычный список, так как его можно легко стилизовать в любое из этих твоих состояний без редактирования js.

можно попробовать прочитать первый пост данной темы, там речь шла о абсолютно пустым списке без опций поверх которого расположен спан с днём недели, что выглядит как список с одной опцией, но если на яваскрипт можно обойтись без спан'а, только списком с одной опцией, то зачем какие-то костыли со спанами?

оставить список со всеми опциями, это выглядит как во времена застоя при союзе, сначала создаём проблемы через js, потом с переменным успехом будем решать их через css, или как в армии – круглое носим, квадратное катаем,

если конечно это возможно, я бы предпочёл чтобы я один раз описал полностью что я хочу от скрипта, один раз отредактировать js, и поставить на этом точку, если потом и будет редактироваться что либо то это только css цвет текста/фона и подобное...

Цитата:

Сообщение от Rise (Сообщение 506566)
Типа стоит "день недели" в единственной числе, поэтому мы напишем Days во множественном. И где здесь логика?

но Day в твоём скрипте это число, а Days день недели.

Rise 15.04.2019 22:51

Цитата:

Сообщение от Besprizornik
если потом и будет редактироваться что либо то это только css цвет текста/фона и подобное...

Вот потом и отредактируешь css для select disabled наравне с остальными select к единому виду, нет никаких проблем.

Besprizornik 15.04.2019 23:52

Цитата:

Сообщение от Rise (Сообщение 506534)
Ну опечатка, мог бы догадаться, C.wDay.innerHTML = o на C.gwDay.innerHTML = C.jwDay.innerHTML = o

84 строку давно исправил...

Цитата:

Сообщение от Rise
Типа стоит "день недели" в единственной числе, поэтому мы напишем Days во множественном. И где здесь логика?

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Конвертировать дату из григорианского календаря в юлианский и обратно.</title>
<style>
body, div, span, select, input, button { font: 16px serif; }
div { padding : 5px; margin: 0 5px 5px 5px; border: 1px solid #999; }
.position { display: inline-block; padding: 0; margin: 0 0 5px 0; position: relative; border: none; }
.gwDay, .jwDay { width: 136px; }
.weekday { display: inline-block; position: relative; right: 132px; top : 1px; }
.date { white-spage: nowrap; padding: 0; margin: 0 0 5px 0; border: none; }
</style>
</head>
<body>
<form name="converter">
    <div>
    <span>Сегодня:</span><br>
    <div class="position">
   <select name="gwDay" class="gwDay"></select>
    <span class="weekday"></span>
    </div>
    <div class="date">
    <select name="gDay"></select>
    <select name="gMonth"></select>
    <input type="number" name="gYear" size="5" min="-4713">
    <i>г.</i>
    <select name="gEra"></select></div>
по григорианскому календарю<br>(<i>новый стиль</i>).<br>
    <input type="button" name="gCalc" value="Смотреть"> 
    <button type="button" class="express" value="g_n_o_w_ce">Сбросить</button>
    </div>
    <div>
    <span>Сегодня:</span><br>
    <div class="position">
   <select name="jwDay" class="jwDay"></select>
    <span class="weekday"></span>
    </div>
    <div class="date">
    <select name="jDay"></select>
    <select name="jMonth"></select>
    <input type="number" name="jYear" size="5" min="-4712">
    <i>г.</i>
    <select name="jEra"></select></div>
по юлианскому календарю<br>(<i>старый стиль</i>).<br>
    <input type="button" name="jCalc" value="Смотреть"> 
    <button type="button" class="express" value="g_n_o_w_ce">Сбросить</button>
    </div>
    <div>
    Впервые григорианский календарь был введён папой римским Григорием XIII в католических странах  с 5 октября 1582 года взамен прежнего юлианского: следующим днём после четверга 4 октября стала <button type="button" class="express" value="g_15_10_1582_ce">пятница 15 октября 1582 г. н. э.</button>. Григорианский календарь используется в большинстве государств и стран мира. В литературе также применяется название — Новый стиль.
      </div>
      <div>
    Пролептический григорианский календарь (предваряющий григорианский календарь, от др.-греч. πρόληψις «предвосхищение») — календарь, расширяющий григорианский календарь на период до его введения 15 октября 1582 года.
      </div>
      <div>
	    Юлиа́нский  календа́рь — календарь, разработанный группой александрийских астрономов во главе с Созигеном. Календарь назван в честь Юлия Цезаря, по указу которого был введен в Римской империи с <button type="button" class="express" value="j_1_1_45_bce">1 января 45 г. до н. э.</button> Год по юлианскому календарю начинается 1 января, так как именно в этот день с 153 года до н. э. избранные комициями консулы вступали в должность. Юлианский календарь заменил старый римский календарь и основывался на астрономической культуре эллинистического Египта.
</div>
</form>
<script>
document.addEventListener('DOMContentLoaded', function () {
// https://en.wikipedia.org/wiki/Julian_day#Julian_day_number_calculation
// The algorithms are valid for JDN >= 0, Gregorian >= 24.11.-4713, Julian >= 01.01.-4712
function gregorianToJdn(d, m, y) {
    return tr((1461 * (y + 4800 + tr((m - 14) / 12))) / 4) +
           tr((367 * (m - 2 - 12 * tr((m - 14) / 12))) / 12) -
           tr((3 * tr((y + 4900 + tr((m - 14) / 12)) / 100)) / 4) + d - 32075;
}
function julianToJdn(d, m, y) {
    return 367 * y - tr((7 * (y + 5001 + tr((m - 9) / 7))) / 4) + tr((275 * m) / 9) + d + 1729777;
}
function jdnToJulianOrGregorian(j, to) { // to: true (julian) false (gregorian)
    var f = (to) ? (j + 1401) : (j + 1363 + tr((tr((4 * j + 274277) / 146097) * 3) / 4));
    var e = 4 * f + 3, h = 5 * tr((e % 1461) / 4) + 2;
    var d = tr((h % 153) / 5) + 1, m = ((tr(h / 153) + 2) % 12) + 1, y = tr(e / 1461) - 4716 + tr((14 - m) / 12);
    return { d: d, m: m, y: y }; 
}
function jdnToWeekDay(j) { return (j % 7) + 1; }
function tr(n) { return n - n % 1; } // truncate (for integer division)
// -- wiki end --
var C = document.converter;
// options
var wdays = ['Понедельник','Вторник','Среда','Четверг','Пятница','Суббота','Воскресенье'];
for (var o = '', i = 0; i < wdays.length; i++) o += '<option value="' + (i + 1) + '">' + wdays[i] + '</option>';

C.gwDay.value = C.jwDay.value = o
for (var o = '', i = 1; i <= 31; i++) o += '<option value="' + i  + '">' + i + '</option>';
C.gDay.innerHTML = C.jDay.innerHTML = o;
var months = ['января','февраля','марта','апреля','мая','июня','июля','августа','сентября','октября','ноября','декабря'];
for (var o = '', i = 0; i < months.length; i++) o += '<option value="' + (i + 1) + '">' + months[i] + '</option>';
C.gMonth.innerHTML = C.jMonth.innerHTML = o;
var eras = ['н. э.','до н. э.'], _eras = ['ce','bce'];
for (var o = '', i = 0; i < eras.length; i++) o += '<option value="' + _eras[i] + '">' + eras[i] + '</option>';
C.gEra.innerHTML = C.jEra.innerHTML = o;
// -- options end --
C.gCalc.onclick = function () {
    var gd = +C.gDay.value, gm = +C.gMonth.value, gy = historicalToAstronomical(+C.gYear.value, C.gEra.value);
    var jdn = gregorianToJdn(gd, gm, gy), wd = jdnToWeekDay(jdn), jd = jdnToJulianOrGregorian(jdn, true);
    var jy = astronomicalToHistorical(jd.y);
    C.gwDay.value = C.jwDay.value = wd, C.jDay.value = jd.d, C.jMonth.value = jd.m, C.jYear.value = jy.y, C.jEra.value = jy.e;
    onUpdateAll(jdn);
};
C.jCalc.onclick = function () {
    var jd = +C.jDay.value, jm = +C.jMonth.value, jy = historicalToAstronomical(+C.jYear.value, C.jEra.value);
    var jdn = julianToJdn(jd, jm, jy), wd = jdnToWeekDay(jdn), gd = jdnToJulianOrGregorian(jdn, false);
    var gy = astronomicalToHistorical(gd.y);
    C.gwDay.value = C.jwDay.value = wd, C.gDay.value = gd.d, C.gMonth.value = gd.m, C.gYear.value = gy.y, C.gEra.value = gy.e;
    onUpdateAll(jdn);
};
function initDate(c, d, m, y, e) {
    if (d + m + y == 'now') { var n = new Date(); d = n.getDate(), m = n.getMonth() + 1, y = n.getFullYear(); }
    C[c + 'Day'].value = d, C[c + 'Month'].value = m, C[c + 'Year'].value = y, C[c + 'Era'].value = e;
    C[c + 'Calc'].onclick();
}
function historicalToAstronomical(y, e) { // e: 'ce' or 'bce'
    e = (y < 1) ? 'bce' : e;
    return ((e == 'bce') && y > 0) ? (1 - y) : y;
}
function astronomicalToHistorical(y) {
    var e = (y < 1) ? 'bce' : 'ce';
    return { y: (e == 'bce') ? -(y - 1) : y, e: e };
}
for (var ess = C.querySelectorAll('.express'), es, i = 0; i < ess.length; i++) {
     es = ess[i], es.onclick = Function.prototype.apply.bind(initDate, null, es.value.split('_'));
}
initDate('g', 'n', 'o', 'w', 'ce');
function onUpdateAll(jdn) {
    console.log('JDN:', jdn);
    console.assert(jdn >= 2299161, 'Proleptic: Gn < 15.10.1582 CE');
    console.assert(jdn >= 1704987, 'Proleptic: Jn < 01.01.45 BCE');
    console.assert(jdn >= 0, 'Invalid: Gn < 24.11.4714 BCE, Jn < 01.01.4713 BCE');
}
});
</script>
</body>
</html>


не могу понять почему не показывает день недели?

Besprizornik 16.04.2019 20:43

Rise,
неужели так трудно сказать какие строчки надо исправить и как

Besprizornik 16.04.2019 23:04

Rise в 38 посте сделал как ты сказал, 85 и 87 строчки исправил, что ещё не так?


Часовой пояс GMT +3, время: 06:51.