Объявление кол-во дней в году.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
alex shestov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 25.04.2005 (Пн) 12:01

Объявление кол-во дней в году.

Сообщение alex shestov » 20.09.2005 (Вт) 10:38

Стоит следующая проблема: При расчете Евробондов используется база расчета в 360 дней в году. Как можно ее объявить чтобы правильно расчитывался купонный период?

Например:
Начало куп. периода - 03.03.05
Выплата купона - 03.09.05

При нормальной базе в 365 дней получается что кол-во дней 184, а для Евробондов с базой в 360 дней получается 180 дней.

Как это возможно реализовать?

Спасибо.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 20.09.2005 (Вт) 10:46

Хм. Я точно не помню данную предметную область, но скорее всего, имеет место быть следующее определение евро-дня:
Код: Выделить всё
EuroDay = 360 / 365 * NormalDay

Ну и используй его. С округлением, разумеется.

Ну или ищи определение этой системы подсчета, может, там какие-то конкретные дни года выкидываются.

alex shestov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 25.04.2005 (Пн) 12:01

Сообщение alex shestov » 20.09.2005 (Вт) 11:01

Ennor писал(а):Хм. Я точно не помню данную предметную область, но скорее всего, имеет место быть следующее определение евро-дня:
Код: Выделить всё
EuroDay = 360 / 365 * NormalDay

Ну и используй его. С округлением, разумеется.

Ну или ищи определение этой системы подсчета, может, там какие-то конкретные дни года выкидываются.


Там дни не выкидываются, там просто в каждом месяце строго 30 дней.

Никак не придумаю как же так почсчитать чтоб правильно было... :roll:

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 20.09.2005 (Вт) 11:03

Если это делается в Excel, то там есть функция, ДНЕЙ360 помоему.
Почитать описание по этой функции, как она считается.
Lasciate ogni speranza, voi ch'entrate.

alex shestov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 25.04.2005 (Пн) 12:01

Сообщение alex shestov » 20.09.2005 (Вт) 11:07

alibek писал(а):Если это делается в Excel, то там есть функция, ДНЕЙ360 помоему.
Почитать описание по этой функции, как она считается.


К сожалению - нужно для Access. А в Экселе есть ADPriсe - она сразу все считает и по нужно базе. :(
Последний раз редактировалось alex shestov 20.09.2005 (Вт) 11:14, всего редактировалось 1 раз.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 20.09.2005 (Вт) 11:11

ADPrise -- это из расширенных функций? Тогда можно просто посмотреть ее исходники.
Lasciate ogni speranza, voi ch'entrate.

alex shestov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 25.04.2005 (Пн) 12:01

Сообщение alex shestov » 20.09.2005 (Вт) 11:17

alibek писал(а):ADPrise -- это из расширенных функций? Тогда можно просто посмотреть ее исходники.


Да из них, но справку у меня по ней не выводит... что за засада.

alex shestov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 25.04.2005 (Пн) 12:01

Сообщение alex shestov » 20.09.2005 (Вт) 11:20

alibek писал(а):ADPrise -- это из расширенных функций? Тогда можно просто посмотреть ее исходники.


А где вообще можно посмотреть исходники?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 20.09.2005 (Вт) 11:56

У меня этой функции нет, не знаю.
Но она должна быть в XLA-файле.
Lasciate ogni speranza, voi ch'entrate.

alex shestov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 25.04.2005 (Пн) 12:01

Сообщение alex shestov » 20.09.2005 (Вт) 12:00

alibek писал(а):У меня этой функции нет, не знаю.
Но она должна быть в XLA-файле.


Ок - спасибо. Буду биться! :)

alex shestov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 25.04.2005 (Пн) 12:01

Сообщение alex shestov » 20.09.2005 (Вт) 12:14

Вот, нашел как достаточно просто решить эту проблему, через эти формулу:

Базисы 30/360
Разница в днях N между двумя датами T1 и T2 расчитывается как выражение:

N = D2 — D1 + 30 (M2 — M1) + 360 (Y2 — Y1), где

D1/M1/Y1 — дата T1 (первая дата)
D2/M2/Y2 — дата T2 (вторая дата)

Это, так для слова...вдруг кому понадобится.

Info_m.be_free
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 154
Зарегистрирован: 27.02.2003 (Чт) 21:38
Откуда: Ирпень

Сообщение Info_m.be_free » 26.09.2005 (Пн) 4:35

А чтобы это работало все время можно ещё и высокосный год учесть... 8)

Ем вилкой...

alex shestov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 25.04.2005 (Пн) 12:01

Сообщение alex shestov » 26.09.2005 (Пн) 7:08

Info_m.be_free писал(а):А чтобы это работало все время можно ещё и высокосный год учесть... 8)


Какие ваши предложения на эту тему? :roll:

Info_m.be_free
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 154
Зарегистрирован: 27.02.2003 (Чт) 21:38
Откуда: Ирпень

Сообщение Info_m.be_free » 26.09.2005 (Пн) 11:46

google leap year :idea:
ну это так бывает в году иногда когда вместо 365 :oops: например так:[url]рttp://www.emsindia.com/Hindi/H2/C827.html[/url] смотрим по февралю.
http://visualbasic.about.com/od/vbnetspecialtopics/a/bldykleapyra.htm - тут ещё размышления на тему по англицки....
ну и по коду соответственно заменить 365 на DaysInYear(MyYear)
я бы делал так:
Код: Выделить всё
Function DaysInYear(MyYear)
DaysInYear = 365
If LeapYear(MyYear) = True Then DaysInYear = 366
End Function

Function LeapYear(MyYear)
'год через каждые 4 на 5-тый
If MyYear Mod 4 = 0 Then
  ' Столетие?
  If MyYear Mod 100 = 0 Then
    ' Значит делим на 400
    If MyYear Mod 400 = 0 Then
      LeapYear = True
    Else
      LeapYear = False
    End If
  Else
    LeapYear = True
  End If
Else
LeapYear = False
End If
End Function

а прикол с делением на 400 дето видел и вспомнил вот отсуда
http://www.fmsinc.com/tpapers/year2000/index.html#Verifying%20Leap%20Year%20Algorithms
или я неправельна вас понил :) ?
Последний раз редактировалось Info_m.be_free 26.09.2005 (Пн) 12:49, всего редактировалось 4 раз(а).

Ем вилкой...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 26.09.2005 (Пн) 11:52

Каждый год - обычный.
Каждый четвертый год - високосный.
Каждый сотый год - обычный.
Каждый четырехсотый год - високосный.
Каждое тысячелетие - обычный.
Lasciate ogni speranza, voi ch'entrate.

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 26.09.2005 (Пн) 12:42

"Читерская" функция вычисления количества дней в году:


DaysInYear =DateSerial(Year+1,1,1)-DateSerial(Year,1,1)

:D
Быть... или не быть. Вот. В чём вопрос?

Info_m.be_free
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 154
Зарегистрирован: 27.02.2003 (Чт) 21:38
Откуда: Ирпень

Сообщение Info_m.be_free » 26.09.2005 (Пн) 12:43

2000 высокосный имхо :lol:

Ем вилкой...

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 26.09.2005 (Пн) 12:51

Да, 2000 високосный. По-моему, alibek, ты неправ насчет "Каждое тысячелетие - обычный". Остальное точно правильно.
Быть... или не быть. Вот. В чём вопрос?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 26.09.2005 (Пн) 13:01

И правда.
Значит тысячелетие для другого календаря :)
Lasciate ogni speranza, voi ch'entrate.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot и гости: 53

    TopList