Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Подсчет количества прожитых дней

33K
26 декабря 2011 года
iprog
60 / / 26.01.2010
Здравствуйте.
Нужно создать программу, которая на основании указанного дня рождения (день, месяц, год) подсчитывает, сколько дней прошло с момента рождения пользователя.

Уже написал такой код (txtDays -- день, cmbMonths -- месяц и txtYears -- год рождения, lblDays -- сюда выводится результат):

Код:
Dim days As Integer, newdays As Integer
    Dim i As Integer
   
    If Month(Now) >= Val(cmbMonths.Text) And Day(Now) >= Val(txtDays.Text) Then
        'если в текущем году у пользователя уже был день рождения
        days = (Year(Now) - Val(txtYears.Text)) * 365
    ElseIf Month(Now) = Val(cmbMonths.Text) And Day(Now) < Val(txtDays.Text) Then
        'если день рождения у пользователя в текущем месяце, но еще не наступил
        days = (Year(Now) - Val(txtYears.Text) + 1) * 365
       
        'возможно, все нижеследуещее до Else лишнее, т. к. повторяет конец
        If Val(txtYears.Text) Mod 4 = 0 Then
            If Val(cmbMonths.Text) <= 2 Then days = days + 1
        End If
       
        For i = 0 To Year(Now) - Val(txtYears.Text) - 1
            If (Val(txtYears.Text) + i + 1) Mod 4 = 0 Then days = days + 1
        Next i
       
        For i = 0 To Month(Now) - Val(cmbMonths.Text) - 1
            Select Case (Val(cmbMonths.Text) + i + 1)
                Case 1, 3, 5, 7, 8, 10, 12
                    days = days + 31
                Case 2
                    If Year(Now) Mod 4 = 0 Then
                        days = days + 29
                    Else
                        days = days + 28
                    End If
                Case 4, 6, 9, 11
                    days = days + 30
            End Select
        Next i
       
        days = days + (Day(Now) - Val(txtDays.Text))
    Else
        days = (Year(Now) - Val(txtYears.Text) + 1) * 365
    End If
    'newdays = days
   
    If Val(txtYears.Text) Mod 4 = 0 Then
        If Val(cmbMonths.Text) <= 2 Then days = days + 1
    End If
   
    For i = 0 To Year(Now) - Val(txtYears.Text) - 1
        If (Val(txtYears.Text) + i + 1) Mod 4 = 0 Then days = days + 1
    Next i
   
    i = 0
   
    For i = 0 To Month(Now) - Val(cmbMonths.Text) - 1
        Select Case (Val(cmbMonths.Text) + i + 1)
            Case 1, 3, 5, 7, 8, 10, 12
                days = days + 31
            Case 2
                If Year(Now) Mod 4 = 0 Then
                    days = days + 29
                Else
                    days = days + 28
                End If
            Case 4, 6, 9, 11
                days = days + 30
        End Select
    Next i
   
    days = days + (Day(Now) - Val(txtDays.Text))
   
    lblDays.Caption = days

Спасибо.
394
26 декабря 2011 года
MegaMozg
317 / / 18.03.2006
первая ссылка из гугла

вам, вероятно, нужна - DateDiff()
33K
26 декабря 2011 года
iprog
60 / / 26.01.2010
Спасибо. Я уже нашел ответ -- из текущей даты вычитается дата дня рождения, формируемая функцией DateSerial :)))))))
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог