реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> Определение промежутка времени
Слесарь
сообщение May 4 2013, 17:07
Сообщение #31


Гуру
******

Группа: Свой
Сообщений: 2 884
Регистрация: 7-11-09
Из: Ростовская обл.
Пользователь №: 53 484



Помнится, вопрос расчета времени по календарю не такой и простой как в приведенных формулах, помнится даже CTime от микрософт не всегда качественно справлялся с этой задачей. Если вопрос принципиален могу покапаться в архивах и привести парочку вариантов возникновения ошибки в реальных приложениях где производится расчет промежутка времени.

вот например

Код
CDate::CDate(const SYSTEMTIME &st)
{
    /* Так как бывает летнее и зимнее время, возьмем
        за базу полдень. Что бы перевод времени не влиял
        на дату. То есть, если за базу берется полночь
        переход на летнее время после зимнего может произвести
        при вычислении BackDay() пропуск целой даты.
    */
    CTime t( st.wYear, st.wMonth, st.wDay, 12, 0, 0 );

    m_time = t;
}
Go to the top of the page
 
+Quote Post
adnega
сообщение May 4 2013, 17:16
Сообщение #32


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Слесарь @ May 4 2013, 21:07) *
Помнится, вопрос расчета времени по календарю не такой и простой как в приведенных формулах

Возможно, но для 2000 - 2099 годов работает для любой даты. Проверял перебором.
Go to the top of the page
 
+Quote Post
Слесарь
сообщение May 4 2013, 17:31
Сообщение #33


Гуру
******

Группа: Свой
Сообщений: 2 884
Регистрация: 7-11-09
Из: Ростовская обл.
Пользователь №: 53 484



странно, разве вам известно как распределится время в промежутке 2014 ... 2099 годах? Время ведь понятие человеческое, людям свойственно менять отношение к собственным понятиям. Вспомните Мюнхаузена с его 32 числом, ведь это нововведение вполне может быть легализовано в один прекрасный момент, как собственно недавняя приписка чуть более десятка дней к календарю.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение May 6 2013, 03:35
Сообщение #34


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (Слесарь @ May 5 2013, 02:31) *
странно, разве вам известно как распределится время в промежутке 2014 ... 2099 годах? Время ведь понятие человеческое, людям свойственно менять отношение к собственным понятиям. Вспомните Мюнхаузена с его 32 числом, ведь это нововведение вполне может быть легализовано в один прекрасный момент, как собственно недавняя приписка чуть более десятка дней к календарю.

При переводе даты в количество секунд (минут) нужно учитывать високосные годы. Как, написано много где. Вроде все. Количество дней в месяцах кроме февраля - фиксированное.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
Слесарь
сообщение May 6 2013, 05:08
Сообщение #35


Гуру
******

Группа: Свой
Сообщений: 2 884
Регистрация: 7-11-09
Из: Ростовская обл.
Пользователь №: 53 484



Рас читывать количество месяцев за промежуток времени по секундам, достаточно сомнительное занятие. Учитывать только секунды при расчете даты, это прямолинейное ориентирование только на один ориентир Солнце. Ошибка в расчете количества месяцев присутствует постоянно.
Кста есть значимые свидетельства ошибок таких расчетов, например католическая Пасха рассчитывается по григорианскому солнечному календарю (учитывается только солнечный год, календарь прямолинейный, как по секундам), католики часто нарушают правило праздновать Пасху в первое воскресенье после наступления полнолуния, которое выпадает на период после весеннего равноденствия. После празднования иудейской Пасхи, если случается совпадение, то правила предписывают перейти к полнолунию следующего месяца.
В настоящее время католическая пасха часто празднуется раньше иудейской, что строго запрещается церковными канонами.
Go to the top of the page
 
+Quote Post
adnega
сообщение May 6 2013, 09:31
Сообщение #36


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Слесарь @ May 4 2013, 21:31) *
Время ведь понятие человеческое, людям свойственно менять отношение к собственным понятиям.

Все просто: приведенные формулы годятся для существующего сейчас календаря.
Когда календарь поменяют, тогда поменяем и формулы.
Привязываться к астрономической точности в рамках решаемой задачи явный перебор.
Эдак можно задачу и не решить... ведь в сутках не ровно 24 часа... да и вращается Земля вокруг
собственной оси с небольшим снижением оборотов...
А если два события происходят в разных точках пространства... или по разные стороны "линии перемены дат"...
Условностей много, и это еще без привлечения религий))
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение May 6 2013, 14:29
Сообщение #37


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Сразу хочу сказать спасибо всем за помощь. Алгоритм приведенный adnega вполне подходит. Только объясните мне, почему если месяц меньше 3-х, то необходимо год уменьшить на 1, а количество месяцев увеличить на 12?
Go to the top of the page
 
+Quote Post
adnega
сообщение May 6 2013, 17:18
Сообщение #38


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(d7d1cd @ May 6 2013, 18:29) *
Только объясните мне, почему если месяц меньше 3-х, то необходимо год уменьшить на 1, а количество месяцев увеличить на 12?

Видимо, чтобы "изменчивый" февраль был в конце.
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st August 2025 - 08:30
Рейтинг@Mail.ru


Страница сгенерированна за 0.01427 секунд с 7
ELECTRONIX ©2004-2016