Разница между датами прописью

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

Разница между датами прописью

Сообщение djalex777 » 01.07.2010 (Чт) 16:27

Цель - создается некий проект, записывается дата создания. Нужно в некотором месте показать, сколько уже существует проект в формате, к примеру: 1 месяц 15 дней. Не могу сообразить как расчитать кол-во дней применительно к этому формату.
Тут высчитываю число лет и месяцев.
Код: Выделить всё
...
y = DateDiff("yyyy", dateMin, dateMax, vbMonday)
m = (DateDiff("m", dateMin, dateMax, vbMonday) - 1) - Y * 12
...

А вот как быть с днями? Может есть у кого мысли. Поделитесь :)

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

Re: Разница между датами прописью

Сообщение alibek » 01.07.2010 (Чт) 16:34

И сколько лет и месяцев будет для диапазона 31.12.2009-01.01.2010?
Lasciate ogni speranza, voi ch'entrate.

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Re: Разница между датами прописью

Сообщение djalex777 » 01.07.2010 (Чт) 16:48

Э, нет... неправильно я написал. Вероятно данная задача не имеет смысла. Вот если условиться, что в месяце сколько-то дней...

Alec
Бывалый
Бывалый
 
Сообщения: 275
Зарегистрирован: 31.08.2008 (Вс) 0:15
Откуда: Ростов-на-Дону

Re: Разница между датами прописью

Сообщение Alec » 01.07.2010 (Чт) 17:00

Думаю - в поиск, но искать подсчет выслуги лет (которая тоже считается в годах, месяцах и днях)
Иногда лучше вовремя остановиться...
И начать заново!

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Разница между датами прописью

Сообщение iGrok » 01.07.2010 (Чт) 17:30

Набрёл вот на это:
http://axforum.info/forums/showthread.php?t=15450
Код: Выделить всё
Public Sub dmdiff(dateBeg As Date, dateEnd As Date)
    Dim dateTest As Date
    Dim y1 As Integer, m1 As Integer, y2 As Integer, m2 As Integer
    Dim ys As Integer, ms As Integer, ds As Integer
 
    y1 = Year(dateBeg): m1 = Month(dateBeg)
    y2 = Year(dateEnd): m2 = Month(dateEnd)

    ms = (y2 * 12 + m2) - (y1 * 12 + m1)  'предварительная разница в месяцах
    dateTest = DateAdd("m", ms, dateBeg)  'пробная дата на ms месяцев от начала
    ds = DateDiff("d", dateTest, dateEnd) 'предварит-ная разница в днях
                                          'в пределах последнего месяца (+/-)

    If ds < 0 Then 'ЕСЛИ предварит-но "перебрали" с целыми месяцами от начала
        ms = ms - 1                           'ТО окончат-ная разница в месяцах
        dateTest = DateAdd("m", ms, dateBeg)  'новая "пробная" дата
        ds = DateDiff("d", dateTest, dateEnd) 'окончательная разница в днях (+)
    End If

    ys = ms \ 12: ms = ms Mod 12 'годы - тривиально от месяцев

    Debug.Print ys, ms, ds '<- Годы, Месяцы, Дни разницы соответственно

    'или еще и недели внутри месяца :-)
    'Debug.Print ys, ms, ds \ 7, ds Mod 7 '<- Годы, Месяцы, Недели, Дни разницы
End Sub


Вроде, работает. )
label:
cli
jmp label

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Re: Разница между датами прописью

Сообщение djalex777 » 01.07.2010 (Чт) 17:39

Спасибо!

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Re: Разница между датами прописью

Сообщение Andrey Fedorov » 04.07.2010 (Вс) 23:08

Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...


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

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

Сейчас этот форум просматривают: Yandex-бот и гости: 106

    TopList