Как сложить два времени

marvel
Дата: 01.06.2004 18:44:34
Как сложить два времени

a=Time
b=3 (имеется ввиду три часа)
Roma R
Дата: 01.06.2004 18:47:36
DateAdd("h", 3, Time)
Shuhard
Дата: 01.06.2004 18:51:44
для скурпулёзности
DateAdd("h", 3, a)
Лифчик
Дата: 01.06.2004 19:13:50
не так давно узнал, что надо писать скрУпулезности и кУры тут нипричем
ЗЫ А не ошибся ли в последнем слове?
Владимир Саныч
Дата: 01.06.2004 19:21:48
Scrupula, scrupula!
lobodava
Дата: 01.06.2004 22:53:16
Для полноты картины:
Sub AddTimeTest()
    Dim dt1 As Date, dt2 As Date, dt3 As Date

    dt1 = #13:17# + #03:00#
    dt2 = dt1 + TimeSerial(3, 0, 0)
    dt3 = TimeSerial(Hour(dt2) + 3, Minute(dt2), 0)

    MsgBox dt1 & vbCrLf & dt2 & vbCrLf & dt3
End Sub
marvel
Дата: 03.06.2004 08:52:51
Что за фигня

Int=270
Tim.Text = DateAdd("n", Int, Time)

Если при сложении время переваливает через полночь то пишется: (31.12.1899 1:22:19). Откуда тут дата?
Alexander G
Дата: 03.06.2004 09:10:19
Получился 1 день. Положительное число.
В типе данных Date (сохраняется как 64-разрядное (8-байтовое) число с плавающей точкой, целая часть - дни)- 0 это 30 декабря 1899, вот он и прибавил.
Rivkin Dmitry
Дата: 03.06.2004 09:34:40
Дело в том, что время (в смысле тольеко часы, мин и сек) это частный случай типа Date и хранится оно в компе как дробная часть дня, т.е. 1 - это один день, а 1 час это 1/24, соответственно мин = 1/24/60 и т.д. В Акцесе за нулевую дату принят
format(CDate(0),"dd/mm/yyyy hh:nn:ss") = 30/12/1899 00:00:00
Значит, сегодня:
cdbl(Now) = 38141.3476851852
Время записывается в поле даты как нуль дней + часы, например, 08:20 = 30/12/1899 00:08:20, соответсвенно, добавление нескольеих часов, переходящих через сутки, увеличит количество дней на 1 и превратит время в дату, например,
?DateAdd("h", 20, Time) = 31/12/1899 04:25:48 AM, а Акцес такой формат уже распознает, как дату, а не как время!
Поэтому, занимаясь вычислениями времени (в смысле тольеко часы, мин и сек) нужно проставлять полный формат даты, а именно:
DateAdd("h", 20, Now) = 04/06/2004 04:32:44 AM
Тогда все понятно и нет вопросов.

Кстати, в MS SQL Server за нулевую дату принято другое число
select cast(0 as datetime) = 1900-01-01 00:00:00.000
и это может приводить к ошибкам вычисления даты, которая из бейсика и акцеса записывается в таблицы в серевера в своем формате.
Roma R
Дата: 03.06.2004 10:56:50
Да и в функции для добавления часов надо H, а не N (N - это минуты)