Я хочу рассчитать разницу в 2 даты в Lotusscript (IBM Lotus Notes 8.5)

Я хочу рассчитать разницу в две даты в Lotusscript. например (18.10.2011 - 18.08.2011) = 71 день


person Gaurav Sotani    schedule 18.10.2011    source источник
comment
Сценарий Lotus — это вариант BASIC, поэтому тег javascript неуместен.   -  person RobG    schedule 18.10.2011


Ответы (3)


Из справки Lotus Designer:

Метод TimeDifference, находит разницу в секундах между одной датой и временем другой.

notesDateTime.TimeDifference( notesDateTime )
person Jasper Duizendstra    schedule 18.10.2011
comment
Это может пойти не так, когда задействованы изменения DST, если только вы не используете .SetAnyTime для объектов NotesDateTime перед выполнением .TimeDifference(). - person Stan Rogers; 28.10.2011

Вот фрагмент, который вы можете вставить в кнопку, чтобы увидеть, как она работает:

Sub Click(Source As Button)
Dim workspace As New NotesUIWorkspace   
Dim uidoc As NotesUIDocument        
Dim doc As NotesDocument            
Dim startDT As New NotesDateTime("")
Dim endDT As New NotesDateTime("")
Dim diff As Long

Set uidoc = workspace.CurrentDocument   
Set doc = uidoc.Document        

Set startDT = doc.getFirstItem("StartDate").dateTimeValue
Call startDT.SetAnyTime 
Set endDT = doc.GetFirstItem("ReturnDate").dateTimeValue
Call endDT.SetAnyTime   
diff = startDT.TimeDifference(endDT)    
Msgbox Cstr(diff)   
End Sub

Вот таблица, которую я веду, чтобы разобраться в цифрах:

<table>
  <tr>
    <th>startDT</th>
    <th>endDT</th>
    <th>Result</th>
  </tr>
  <tr>
    <td>June</td>
    <td>March</td>
    <td>Positive</td>
  </tr>
  <tr>
    <td>June</td>
    <td>October</td>
    <td>Negative</td>
  </tr>
</table>

Если 3 марта, вы должны добавить (т. е. положительное значение), чтобы получить июнь, который равен 6. Если июнь все еще 6, чтобы получить его из октября, вы должны вычесть (т. е. отрицательное значение).

person Brian Moore    schedule 21.05.2015

Это очень сильно зависит от того, в чем вы храните дату. Программирование даты - большая проблема в Lotusscript.

Если вы используете объекты NotesDateTime, то решение Jasper является лучшим, хотя я не понимаю, что из чего вычитается.

Простой способ - просто преобразовать значения элемента даты и времени в одиночные числа и вычесть. Часть до запятой - дни, часть после - часы и т.д...

person Andrew Magerman    schedule 13.01.2015