Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 26.03.2019, 11:22
Аватар для Блондинка
Профессор
Отправить личное сообщение для Блондинка Посмотреть профиль Найти все сообщения от Блондинка
 
Регистрация: 24.02.2019
Сообщений: 806

Как правильно указать дату в такой строке
d = new Date(),
если год со знаком минус, ну типа до н. э.
Ответить с цитированием
  #12 (permalink)  
Старый 26.03.2019, 12:28
Аватар для Блондинка
Профессор
Отправить личное сообщение для Блондинка Посмотреть профиль Найти все сообщения от Блондинка
 
Регистрация: 24.02.2019
Сообщений: 806

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

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

или как
Ответить с цитированием
  #13 (permalink)  
Старый 26.03.2019, 17:36
Аватар для Блондинка
Профессор
Отправить личное сообщение для Блондинка Посмотреть профиль Найти все сообщения от Блондинка
 
Регистрация: 24.02.2019
Сообщений: 806

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

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

или как
никто не знает?
Ответить с цитированием
  #14 (permalink)  
Старый 26.03.2019, 18:20
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Блондинка
никто не знает?
Знают - это объект не работает с метками ниже эпохи Unix. Почитайте, может это и нужно https://planetcalc.ru/503/
Ответить с цитированием
  #15 (permalink)  
Старый 26.03.2019, 19:55
Аватар для Блондинка
Профессор
Отправить личное сообщение для Блондинка Посмотреть профиль Найти все сообщения от Блондинка
 
Регистрация: 24.02.2019
Сообщений: 806

Сообщение от laimas
Знают - это объект не работает с метками ниже эпохи Unix.
Сообщение от Rise
Да и сам объект Date в js не безграничен, от -271821 до 275760 года, Григорианская система
а где истина
Ответить с цитированием
  #16 (permalink)  
Старый 26.03.2019, 20:22
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от Блондинка
а где истина
Истина про 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 г. н. э.

Последний раз редактировалось Malleys, 26.03.2019 в 20:28.
Ответить с цитированием
  #17 (permalink)  
Старый 26.03.2019, 20:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Malleys,
Ответить с цитированием
  #18 (permalink)  
Старый 26.03.2019, 21:24
Аватар для Блондинка
Профессор
Отправить личное сообщение для Блондинка Посмотреть профиль Найти все сообщения от Блондинка
 
Регистрация: 24.02.2019
Сообщений: 806

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;
Ответить с цитированием
  #19 (permalink)  
Старый 26.03.2019, 21:52
Аватар для Блондинка
Профессор
Отправить личное сообщение для Блондинка Посмотреть профиль Найти все сообщения от Блондинка
 
Регистрация: 24.02.2019
Сообщений: 806

Ладно, попробую задать вопрос по теме топика, возможно ли расчитать дату религиозных праздников, православных и католических пасхи и так далее, или проще будет взять уже готовые даты?
Ответить с цитированием
  #20 (permalink)  
Старый 26.03.2019, 22:44
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

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

Вот я попробовал...
<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 Что, теперь будете исследовать Метонов цикл?

Последний раз редактировалось Malleys, 26.03.2019 в 22:49.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вывести баннер при помощи JavaScript? FRILITE Общие вопросы Javascript 4 23.03.2016 05:18
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 13:29
Вывести на печать DIV как его видно в браузере (с учетом фона с стилей) unomomento Элементы интерфейса 3 28.12.2013 00:43
Как приплюсовать 3 inputa и вывести, сообщение. ainur777 Элементы интерфейса 2 10.11.2013 15:33
Как вывести переменную из javascript в html код? red-nicolas Элементы интерфейса 3 25.02.2012 13:27