Требуется вычесть одну дату из другой, прибавить 10 дней; а результат показать..

Автор Тема: Требуется вычесть одну дату из другой, прибавить 10 дней; а результат показать..  (Прочитано 6553 раз)

Sergey_st85

  • Старший специалист
  • ****
  • Сообщений: 181
  • Только вперед!
    • Просмотр профиля
    • Личный сайт.
..в днях; плохо понимаю, как сделать.

ViV

  • Global Moderator
  • Профессионал
  • *****
  • Сообщений: 1428
  • Владимир Егоров
    • Просмотр профиля
    • lotusnotes.ru
    • E-mail
@-формулы:
date2-date1=результат в секундах
+10 дней: @Adjust(date;0;0;10;0;0;0)

LS:
date2-date1: date2.TimeDifference(date1)=результат в секундах
+10 дней: date.AdjustDay(10)

секунды/86400=дни
« Последнее редактирование: 03 Сентябрь 2009, 10:24:40 от ViV »

Sergey_st85

  • Старший специалист
  • ****
  • Сообщений: 181
  • Только вперед!
    • Просмотр профиля
    • Личный сайт.
ВАЖНО.
« Ответ #2 : 02 Ноябрь 2009, 10:35:17 »
Как впоследствии выяснилось, Notesdatatime - глючный класс; то ли вычитает дату неверно, то ли берет не так... Короче, пока я свои ф-ции не написал - у меня неправильно время считалось. А вот дни хорошо прибавляет.

Ф-ция удаления выходных:
On Error Goto errh
   
   analize_weekends=0
   If time1.DateOnly=time2.DateOnly Then
      Exit Function
   End If
   Dim s1 As Variant
   Dim day1 As Variant
   
   
   While Datevalue(Cstr(time1.DateOnly))<Datevalue(Cstr(time2.DateOnly))
      day1=Weekday(time1.DateOnly)
      
      If Cint(day1)=1 Then day1=7 Else day1=day1-1
      If day1=7 Or day1=6 Then analize_weekends=analize_weekends+86400
      Call          time1.AdjustDay(1)
   Wend
   
   Exit Function



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

On Error Goto errh
   
   Dim s1 As Variant
   
   Deprive_seconds=0
   
   While Datevalue(Cstr(time1.DateOnly))<Datevalue(Cstr(time2.DateOnly))
      Deprive_seconds=Deprive_seconds+86400
      Call          time1.AdjustDay(1)
   Wend