Datediff

Программирование на Visual Basic for Applications
Svetlana
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 03.01.2002 (Чт) 21:48

Datediff

Сообщение Svetlana » 13.01.2004 (Вт) 16:59

ещё один вопрос.
В формуле
.FormulaR1C1 = DateDiff("yyyy", Adodc1.Recordset.Fields("DateOfBirth").Value, Date)
VBA после 0,5 округляет до большего, тогда как мне нужно фактически прожитое количество лет.

спасибо
Svetlana

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 13.01.2004 (Вт) 18:23

Для рпределения кол-ва прожитых лет эта фукция не годится.
Код: Выделить всё
?DateDiff("yyyy", "2000-01-01", "2000-12-31")
0
?DateDiff("yyyy", "2000-12-31", "2001-12-31")
1
?DateDiff("yyyy", "2000-12-31", "2001-01-01")
1

Т.е. эта функция фактически считает Year(Date1) - Year(Date2)

Можно сделать так:
Код: Выделить всё
d=DateDiff("d", "1994-01-01", "1994-12-31"):?d \ 365 "years", d mod 365 "days", "(" d ")"
0 years       364 days     ( 364 )
d=DateDiff("d", "1994-12-31", "1995-12-31"):?d \ 365 "years", d mod 365 "days", "(" d ")"
1 years       0 days       ( 365 )
d=DateDiff("d", "1994-12-31", "1995-01-01"):?d \ 365 "years", d mod 365 "days", "(" d ")"
0 years       1 days       ( 1 )

Теперь проблема только в определении високосных годов. Т.к. они бывают лишь раз в четыре года, то к 100 годам погрешность старения будет не больше 25-ти дней, что меньше месяца, хотя женщинам наверняка это не понравится :D .


Вернуться в VBA

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 30

    TopList