Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как вывести <div> с поздравлением? (https://javascript.ru/forum/misc/76980-kak-vyvesti-div-s-pozdravleniem.html)

Блондинка 26.03.2019 11:22

Как правильно указать дату в такой строке
d = new Date(),
если год со знаком минус, ну типа до н. э.

Блондинка 26.03.2019 12:28

ну с этим всё ясно
d = new Date(1970,0,1)

вопрос как быть если речь идет о древних датах до н. э.? просто ставить год с минусом
d = new Date(-1970,0,1)

или как

Блондинка 26.03.2019 17:36

Цитата:

Сообщение от Блондинка (Сообщение 505497)
ну с этим всё ясно
d = new Date(1970,0,1)

вопрос как быть если речь идет о древних датах до н. э.? просто ставить год с минусом
d = new Date(-1970,0,1)

или как

никто не знает?

laimas 26.03.2019 18:20

Цитата:

Сообщение от Блондинка
никто не знает?

Знают - это объект не работает с метками ниже эпохи Unix. Почитайте, может это и нужно https://planetcalc.ru/503/

Блондинка 26.03.2019 19:55

Цитата:

Сообщение от laimas
Знают - это объект не работает с метками ниже эпохи Unix.

Цитата:

Сообщение от Rise
Да и сам объект Date в js не безграничен, от -271821 до 275760 года, Григорианская система

а где истина

Malleys 26.03.2019 20:22

Цитата:

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

Истина про JavaScript записана в спецификации EcmaScript. А вы думали откуда производители браузера догадались? Они ведь явно не таким образом пишут браузер, как вы свой учебник!

Время в JavaScript представлено при помощи класса Date, экземпляры которого хранят конкретное время. Время измеряется в миллисекундах, прошедших с 1 января 1970 года. И поскольку целочисленные значения Number представлены целыми числами от -9 007 199 254 740 992 до 9 007 199 254 740 992, то этого достаточно, чтобы измерять время с миллисекундной точностью на протяжении 285 616 лет от полуночи 1 января 1970 по Гринвичу, как в будущее, так и в прошлое.

При помощи этого объекта можно представить любую зафиксированную дату из истории человечества. Однако у вас могут возникнуть вопросы:
  • Как создавать даты в промежутке между 1 г. н. э. и 99 г. н. э. включительно?
  • Почему год даты до нашей эры отличается на единицу?

Согласно спецификации EcmaScript, пункт 20.3.2.1, перегрузка конструктора класса Date, которая принимает хотя бы 2 аргумента, принимает в качестве аргументов числа, значение которых зависит от положения в списке аргументов: Date ( год, месяц [ , число [ , часы [ , минуты [ , секунды [ , миллисекунды ] ] ] ] ] ). Однако в том же разделе указано, что если год приведённый к целочисленному значению, является числом от 0 до 99, то год, представленный объектом Date, будет являться годом от 1900 до 1999 соответственно. Также в этой перегрузке второй аргумент представляет месяц, уменьшенный на 1. Также это локальное время.

alert(new Date(2015, 8, 17)); // 17 сентября 2015
alert(new Date(65, 4, 5)); // 5 мая 1965


Строковое представление принимает любую дату по Гринвичу с 1 января 1 г. н. э. по 31 декабря 9999 г. н. э. в формате YYYY-MM-DD
alert(new Date("0034-05-15")); // 15 мая 34 г. н. э.
alert(new Date("0117-01-04")); // 4 января 117 г. н. э.


Остальные даты представляются при помощи расширенного строкового представления: в виде приставки знака и двух дополнительных разрядов для представления года.

alert(new Date("-000606-10-30")); // 30 октября 607 г. до н. э.

alert(new Date("-000001-01-01")); // 1 января 2 г. до н. э.

alert(new Date("+000000-01-01")); // 1 января 1 г. до н. э.

alert(new Date("+000001-01-01")); // 1 января 1 г. н. э.

alert(new Date("+001970-01-01")); // 1 января 1970 г. н. э.

alert(new Date("+002019-03-26")); // 26 марта 2019 г. н. э.


И ещё стоит учитывать, что нулевого года не существует. После 31 декабря 1 до н. э. идёт 1 января 1 г. н. э.

рони 26.03.2019 20:28

Malleys,
:thanks:

Блондинка 26.03.2019 21:24

Malleys,
огромная благодарность тебе за столь подробные объяснения

Цитата:

Сообщение от Malleys
Они ведь явно не таким образом пишут браузер, как вы свой учебник

а что касается моего "учебника", могу точно сказать только одно, он будет намного более понятным чем у товарища Влада Мержевича, прочитав у него про тот же радиус, попробуй догадайся что надо записать 1/2/3/4 значения для горизонтали а потом через слеш столько значений для вертикали, первая мысль что приходит – это первое значение для одного угла или одно значение или два значения через слеш, тоесть пользователь скорее поймёт что надо писать четыре двойных значений через слеш для каждого угла типа того что
border-radius: 15px/10px 15px/10px 15px/10px 15px/10px;
а на самом деле надо
border-radius: 15px 15px 15px 15px / 10px 10px 10px 10px;

Блондинка 26.03.2019 21:52

Ладно, попробую задать вопрос по теме топика, возможно ли расчитать дату религиозных праздников, православных и католических пасхи и так далее, или проще будет взять уже готовые даты?

Malleys 26.03.2019 22:44

Цитата:

Сообщение от Блондинка
возможно ли рассчитать дату религиозных праздников, православных и католических пасхи и так далее,

Да, возможно. Например, вычисление дня пасхи Пасхалия

Вот я попробовал...
<h4>Православная пасха</h4>
<input id="input" type="number" value="2019">
<output id="output"></output>

<script>

function psh(Y){
	var a = (19 * (Y % 19) + 15) % 30;
	var b = (2 * (Y % 4) + 4 * (Y % 7) + 6 * a + 6) % 7;

	if(a + b > 26)
		return (a + b - 26) + " мая " + Y;
	else
		return (a + b + 4) + " апреля " + Y;
}

(input.oninput = function() {
	output.textContent = psh(+input.value);
})();

</script>


UPD Что, теперь будете исследовать Метонов цикл?


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