Я хочу рассчитать разницу в две даты в Lotusscript. например (18.10.2011 - 18.08.2011) = 71 день
Я хочу рассчитать разницу в 2 даты в Lotusscript (IBM Lotus Notes 8.5)
Ответы (3)
Из справки Lotus Designer:
Метод TimeDifference, находит разницу в секундах между одной датой и временем другой.
notesDateTime.TimeDifference( notesDateTime )
Вот фрагмент, который вы можете вставить в кнопку, чтобы увидеть, как она работает:
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, чтобы получить его из октября, вы должны вычесть (т. е. отрицательное значение).
Это очень сильно зависит от того, в чем вы храните дату. Программирование даты - большая проблема в Lotusscript.
Если вы используете объекты NotesDateTime, то решение Jasper является лучшим, хотя я не понимаю, что из чего вычитается.
Простой способ - просто преобразовать значения элемента даты и времени в одиночные числа и вычесть. Часть до запятой - дни, часть после - часы и т.д...