powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Сколько лет, месяцев, дней ?
8 сообщений из 8, страница 1 из 1
Сколько лет, месяцев, дней ?
    #35181878
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте !!!

Вопрос:

На 1 Марта 2008 Года, человек проработал 3 Года, 8 Месяцев, 17 Дней

Каким образом считать сколько Лет, Месяцев, Дней он проработал на сегоднешнем
дне - 11 Марта 2008 Год

Спасибо.
...
Рейтинг: 0 / 0
Сколько лет, месяцев, дней ?
    #35181998
Фотография IguMEN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я помню, вычитание дат дает результат в днях. Вот эти дни и прибавь к "3 года 8 месяцев 17 дней"
...
Рейтинг: 0 / 0
Сколько лет, месяцев, дней ?
    #35182007
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вам надо вычислить дату приема на работу и потом от нее срок на сегодня?
А срок считать календарный?
...
Рейтинг: 0 / 0
Сколько лет, месяцев, дней ?
    #35182257
Letter_D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MsgBox Format(date1 - date2, "yy mm dd")
...
Рейтинг: 0 / 0
Сколько лет, месяцев, дней ?
    #35182586
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне надо считать сколько времени (Годы.Месяцы.Дни) работник проработал
на предприятие, но , человек может уволиться потом прийти обратно и тд
(случаи есть по 5 раз)
В этом случае ему считаеться общий стаж на 01.03.2008 , потом , каждый день с
нарастающим я должен приплюсовать количество дней
Например, на 01.03.2008 у человека запись : 03.08.17 (те 3 Года 8 Месяцев 17 Дней)
на 11.03.2008 у человека должно быть запись : 03.08.27 (те 3 Года 8 Месяцев 27 Дней)
...
Рейтинг: 0 / 0
Сколько лет, месяцев, дней ?
    #35182800
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что за магическая такая дата 1 марта ?
Как я понял, вам надо считать прерывающийся стаж, и приходится принимать решение что делать с обрывками дней общая сумма которых превышает месяц. Это надо у заказчиков спрашивать а не у программистов. Т.к. алгоритм подсчета стажа может отличаться от календарных периодов.
...
Рейтинг: 0 / 0
Сколько лет, месяцев, дней ?
    #35183249
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо Всем, вопрос снят !
...
Рейтинг: 0 / 0
Сколько лет, месяцев, дней ?
    #35184215
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Держите - функция, возвращающая интервал между двумя датами. Возвращается интервалы от года до секунды.:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
' Функция получает разницу между датами в заданных единицах даты/времени 
' При ReturnString=True возвращает строковое представление интервала 
Public Function DateInterval(d1 As Date, d2 As Date, _ 
        Optional Years As Variant, Optional Months As Variant, Optional Days As Variant, _ 
        Optional Hours As Variant, Optional Minutes As Variant, Optional Seconds As Variant, _ 
        Optional ReturnString As Boolean = False) As String 
    
    Const sr As String = ", " 
    Const y As String = "yyyy", m As String = "m", d As String = "d", _ 
        h As String = "h", n As String = "n", s As String = "s" 
    Dim dm As Date, dd As Date, dh As Date, dn As Date, ds As Date, _ 
        ss As String, i As Integer, sss As String 

    If IsMissing(Years) Then 
        dm = d1 
    Else 
        Years = DateDiff(y, d1, d2) 
        dm = DateAdd(y, Years, d1) 
        If dm > d2 Then 
            Years = Years -  1  
            dm = DateAdd(y, Years, d1) 
        End If 
        If ReturnString Then 
            ss = Right$(Format$(Years, "00"),  2 ) 
            If Right$(ss,  1 ) = "0" Or Left$(ss,  1 ) = "1" Or CInt(Right$(ss,  1 )) >=  5  Then 
                sss = Years & " лет" 
            Else 
                sss = Years & " год" 
                If Right$(ss,  1 ) <> "1" Then sss = sss & "а" 
            End If 
        End If 
    End If 
    If IsMissing(Months) Then 
        dd = dm 
    Else 
        Months = DateDiff(m, dm, d2) 
        dd = DateAdd(m, Months, dm) 
        If dd > d2 Then 
            Months = Months -  1  
            dd = DateAdd(m, Months, dm) 
        End If 
        If ReturnString Then 
            ss = Right$(Format$(Months, "00"),  2 ) 
            If Len(sss) Then sss = sss & sr 
            sss = sss & Months & " месяц" 
            If Right$(ss,  1 ) = "0" Or Left$(ss,  1 ) = "1" Or CInt(Right$(ss,  1 )) >=  5  Then 
                sss = sss & "ев" 
            Else 
                If Right$(ss,  1 ) <> "1" Then sss = sss & "а" 
            End If 
        End If 
    End If 
    If IsMissing(Days) Then 
        dh = dd 
    Else 
        Days = DateDiff(d, dd, d2) 
        dh = DateAdd(d, Days, dd) 
        If dh > d2 Then 
            Days = Days -  1  
            dh = DateAdd(d, Days, dd) 
        End If 
        If ReturnString Then 
            ss = Right$(Format$(Days, "00"),  2 ) 
            If Len(sss) Then sss = sss & sr 
            sss = sss & Days & " д" 
            If Right$(ss,  1 ) = "0" Or Left$(ss,  1 ) = "1" Or CInt(Right$(ss,  1 )) >=  5  Then 
                sss = sss & "ней" 
            Else 
                sss = sss & IIf(Right$(ss,  1 ) = "1", "ень", "ня") 
            End If 
        End If 
    End If 
    If IsMissing(Hours) Then 
        dn = dh 
    Else 
        Hours = DateDiff(h, dh, d2) 
        dn = DateAdd(h, Hours, dh) 
        If dn > d2 Then 
            Hours = Hours -  1  
            dn = DateAdd(h, Hours, dh) 
        End If 
        If ReturnString Then 
            ss = Right$(Format$(Hours, "00"),  2 ) 
            If Len(sss) Then sss = sss & sr 
            sss = sss & Hours & " час" 
            If Right$(ss,  1 ) = "0" Or Left$(ss,  1 ) = "1" Or CInt(Right$(ss,  1 )) >=  5  Then 
                sss = sss & "ов" 
            Else 
                If Right$(ss,  1 ) <> "1" Then sss = sss & "а" 
            End If 
        End If 
    End If 
    If IsMissing(Minutes) Then 
        ds = dn 
    Else 
        Minutes = DateDiff(n, dn, d2) 
        ds = DateAdd(n, Minutes, dn) 
        If ds > d2 Then 
            Minutes = Minutes -  1  
            ds = DateAdd(n, Minutes, dn) 
        End If 
        If ReturnString Then 
            ss = Right$(Format$(Minutes, "00"),  2 ) 
            If Len(sss) Then sss = sss & sr 
            sss = sss & Minutes & " минут" 
            If Not (Right$(ss,  1 ) = "0" Or Left$(ss,  1 ) = "1" Or CInt(Right$(ss,  1 )) >=  5 ) Then 
                sss = sss & IIf(Right$(ss,  1 ) = "1", "а", "ы") 
            End If 
        End If 
    End If 
    If Not IsMissing(Seconds) Then 
        Seconds = DateDiff(s, ds, d2) 
        If ReturnString Then 
            ss = Right$(Format$(Seconds, "00"),  2 ) 
            If Len(sss) Then sss = sss & sr 
            sss = sss & Seconds & " секунд" 
            If Not (Right$(ss,  1 ) = "0" Or Left$(ss,  1 ) = "1" Or CInt(Right$(ss,  1 )) >=  5 ) Then 
                sss = sss & IIf(Right$(ss,  1 ) = "1", "а", "ы") 
            End If 
        End If 
    End If 
    If ReturnString Then DateInterval = sss 
End Function 
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Сколько лет, месяцев, дней ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]