Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.12.26;
Скачать: CL | DM;

Вниз

datetime как сложить?   Найти похожие ветки 

 
angel495   (2010-09-16 13:04) [0]

Доброго времени суток!

У меня вопрос такой:
Есть datetime в виде 16.09.2010 10:29:15 сюда нужно прибавить 00:00:15 с той же датой, как это реализовать не подскажете?

У меня почему то получается складывание и даты тоже :(
Результат: 03.06.2121 10:29:18 а должно быть 16.09.2010 10:29:18


 
angel495 ©   (2010-09-16 13:08) [1]

прибавить 00:00:03 точнее :)


 
Anatoly Podgoretsky ©   (2010-09-16 13:16) [2]

> angel495  (16.09.2010 13:04:00)  [0]

Не должно так быть, а должно быть вв,мм.4021 года


 
angel495 ©   (2010-09-16 13:23) [3]

a:="16.09.2010 10:29:15";
b:="16.09.2010 00:00:03";

c:=StrToDateTime(a)+StrToDateTime(b);


в итоге c=03.06.2121 10:29:18 ??? как так?
мне бы хотелось получить 16.09.2010 10:29:18


 
Eraser ©   (2010-09-16 13:41) [4]

> [0] angel495   (16.09.10 13:04)

Есть такой замечательный модуль DateUtils, почитай в справке описание его функций, там много интересного.


 
angel495 ©   (2010-09-16 13:43) [5]

Про модуль знаю и про кнопку Ф1 тоже, я не смог разобраться сам, для таких случаев и существуют форумы я не прав?


 
Anatoly Podgoretsky ©   (2010-09-16 13:53) [6]

> angel495  (16.09.2010 13:43:05)  [5]

Я тебе же написал, что получится при сложение с той же датой, а нужный
результат получится если складывать без даты. Да и вообще надо просто
прибавить 3 (три) секунды.


 
Anatoly Podgoretsky ©   (2010-09-16 13:53) [7]

> angel495  (16.09.2010 13:43:05)  [5]

> для таких случаев и существуют форумы я не прав?

Наверно неправ в определение назначения форума.


 
angel495 ©   (2010-09-16 13:57) [8]


> Я тебе же написал, что получится при сложение с той же датой


а я написал код, который дает неправильный результат.

Так в итоге, как правильно сложить то?


 
Anatoly Podgoretsky ©   (2010-09-16 14:09) [9]

> angel495  (16.09.2010 13:57:08)  [8]

И лапшу нам на уши вешаешь, мол 2010+2010 дает 2121


 
MBo ©   (2010-09-16 14:15) [10]

Нельзя складывать две даты.
Нужно различать понятия временной отметки (O) и временного промежутка (П)
допустимо:
O + П = O
П + П = П
O - O = П
О - П = О
П - П = П
недопустимо:
О + О


 
Andy BitOff ©   (2010-09-16 14:23) [11]


> angel495   (16.09.10 13:04) 

Когда тебе надо сделать, что-то через 3 дня, то чтобы узнать нужную дату, ты же не прибавляешь к 16.09.10 еще 16.09.10. Так же со временем, если тебе через час выходить (в космос), ты же не прибавляешь к 13:04 еще 13:04.


 
Онотоле   (2010-09-16 14:47) [12]

dateutils и еще раз dateutils


 
Ega23 ©   (2010-09-16 14:49) [13]


> dateutils и еще раз dateutils


Можно и без.


 
Онотоле   (2010-09-16 14:53) [14]

можно, но не нужно


 
Ega23 ©   (2010-09-16 14:55) [15]


> можно, но не нужно


Почему?


 
Онотоле   (2010-09-16 14:57) [16]

чтобы снизить нагрузку на форумы


 
Anatoly Podgoretsky ©   (2010-09-16 16:27) [17]

> Ega23  (16.09.2010 14:49:13)  [13]

Конечно можно - ремень и еще раз ремень.


 
Anatoly Podgoretsky ©   (2010-09-16 16:28) [18]

> Онотоле  (16.09.2010 14:53:14)  [14]

Как раз наоборот, а то дураком помрет, для того что бы добавить один день
лезть за утилитой.


 
Anatoly Podgoretsky ©   (2010-09-16 16:29) [19]

> Онотоле  (16.09.2010 14:57:16)  [16]

И это не срабатывает, поскольку следующий вопрос, а как отнять один день.


 
Ega23 ©   (2010-09-16 16:31) [20]


> Как раз наоборот, а то дураком помрет, для того что бы добавить
> один день лезть за утилитой.


Угу. Не, я конечно могу себе представить, что в каком-то страшном сне у TDateTime поменялась структура с Double на, например, два инта.
Тогда использование данных функций спасёт Отца Русской Демократии.


 
Anatoly Podgoretsky ©   (2010-09-16 16:33) [21]

> Ega23  (16.09.2010 16:31:20)  [20]

Ну в MSSQL именно так и есть, а все равно + 1 работает.


 
Ega23 ©   (2010-09-16 16:44) [22]


> Ну в MSSQL именно так и есть, а все равно + 1 работает.

Угу, потому и привёл пример.


 
Юрий Зотов ©   (2010-09-16 17:02) [23]


> angel495   (16.09.10 13:04)  

TDateTime - это дробное число. Целая часть - это число полных суток, прошедших с даты, условно принятой за "нулевую" (см. в справке). А дробная часть - это время (число миллисекунд, прошедших с начала суток, деленное на количество миллисекунд в сутках).

Теперь должно быть ясно, как добавить интервал времени. Надо перевести его в миллисекунды, разделить на количество миллисекунд в сутках и прибавить к исходному TDateTime - получится новый TDateTime.

А в модуле DateUtils, скорее всего, есть уже готовая функция, которая именно это и делает.


 
Anatoly Podgoretsky ©   (2010-09-16 18:48) [24]

> Юрий Зотов  (16.09.2010 17:02:23)  [23]

Есть IncDay :-)
Но зато там есть полезные константы, например величина одной секунды.


 
Palladin ©   (2010-09-16 19:34) [25]

ап вс юз!
файт файт! )


 
Макс Черных   (2010-09-16 22:03) [26]


> Есть datetime в виде 16.09.2010 10:29:15 сюда нужно прибавить
> 00:00:15 с той же датой, как это реализовать не подскажете?
>


Если D - datetime c нужным значением, тогда все просто, да и никаких DateUtils ненадобно:

D := D + EncodeTime(0, 0, 15, 0);

Юрий Зотов ©   (16.09.10 17:02) [23]
> Теперь должно быть ясно, как добавить интервал времени.
> Надо перевести его в миллисекунды, разделить на количество
> миллисекунд в сутках и прибавить к исходному TDateTime -
>  получится новый TDateTime.
>
> А в модуле DateUtils, скорее всего, есть уже готовая функция,
>  которая именно это и делает.

Юра, жжешь :)


 
Ega23 ©   (2010-09-16 22:16) [27]


> D := D + EncodeTime(0, 0, 15, 0);


D := D + 1/(24*60*4);

:)


 
Anatoly Podgoretsky ©   (2010-09-16 23:03) [28]

> Ega23  (16.09.2010 22:16:27)  [27]

Вы переплюнуть друг друга хочете?
Лучше освойте умножение.


 
Германн ©   (2010-09-17 03:29) [29]

Ответ MBo ©   (16.09.10 14:15) [10]
мне понравился.
Это ответ Мастера Алгоритмов!
Я не шучу.


 
Ой   (2010-09-17 07:33) [30]

Мама мыла раму/1000 = (c) Орешник

))))


 
Anatoly Podgoretsky ©   (2010-09-17 07:47) [31]

> Ой  (17.09.2010 07:33:30)  [30]

Рамы осталось только 256 мб


 
12 ©   (2010-09-17 08:54) [32]


> Нужно различать понятия временной отметки (O) и временного
> промежутка (П)
> допустимо:
> O + П = O
> П + П = П
> O - O = П
> О - П = О
> П - П = П
> недопустимо:
> О + О


а любая временная отметка - суть промежуток от т. начала отсчета до т.отметки. :)


 
Медвежонок Пятачок ©   (2010-09-17 09:23) [33]

а любая временная отметка - суть промежуток от т. начала отсчета до т.отметки. :)


Ну если так, то сложи три величины:
- дата рождения наполеона
- дата взятия бастилиии
- дата продажи луизианы америке

что получится в итоге и каков физический/логический/философический смысл будет иметь результат?


 
12 ©   (2010-09-17 09:46) [34]


> Медвежонок Пятачок ©   (17.09.10 09:23) [33]

да запросто.

в итоге будет double
смысл - величина, равная сложению трех отрезков по модулю.
например, сколько прожили всего лет сферические люди в вакууме, если каждый из них дожил соответственно до:
- дата рождения наполеона
- дата взятия бастилиии
- дата продажи луизианы америке


 
Дрон   (2010-09-17 10:07) [35]

D1 := D1 + (D2 - D1)


 
12 ©   (2010-09-17 10:16) [36]


> D1 := D1 + (D2 - D1)


= d1 + d2 - d1 = d1-d1+d2 = d2
d1=d2

гениально! :)


 
Дрон   (2010-09-17 10:26) [37]

Да, что то я стормозил.


 
12 ©   (2010-09-17 10:34) [38]

да не, правильно все :)
искомое значение  := D1 + (D2 - D1)

я прикалываюсь же..
пятница, а все грустные


 
Медвежонок Пятачок ©   (2010-09-17 11:29) [39]

да запросто.

в итоге будет double


Я не в танке, и прекрасно знаю что будет дабл.
Я про смысловую нагрузку полученного результата.

когда складываются три яблока и две груши то в результате получаем пять фруктов.
это понятно.

а что получаем в моем случае с наполеонами и луизианами?


 
Медвежонок Пятачок ©   (2010-09-17 11:31) [40]

например, сколько прожили всего лет сферические люди в вакууме, если каждый из них дожил соответственно до:

ууууууу.......

Лови задачку проще:

складываем две даты твоего рождения, что получаем в итоге?



Страницы: 1 2 вся ветка

Текущий архив: 2010.12.26;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.012 c
2-1285738449
Temp User
2010-09-29 09:34
2010.12.26
Программно выделить секцию у хидера


2-1285681850
Роман
2010-09-28 17:50
2010.12.26
MouseMove


15-1284541924
KSergey
2010-09-15 13:12
2010.12.26
RDP через WEB


2-1285851032
coder123
2010-09-30 16:50
2010.12.26
Как найти открытую форму по типу и по части названия?


15-1284560635
csc
2010-09-15 18:23
2010.12.26
как защитить свою программу от взлома?