Главная страница
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]

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

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

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

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


 
Anatoly Podgoretsky ©   (2010-09-17 11:35) [41]

> 12  (17.09.2010 10:34:38)  [38]

Пить водку, пока не станет весело.


 
Anatoly Podgoretsky ©   (2010-09-17 11:36) [42]


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

Сумму двух дат.


 
12 ©   (2010-09-17 11:48) [43]


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

ок.
но пусть я - современник ИХ
тогда получаем дату, в которую человек рожденный сейчас будет вдвое меня моложе.

или так.
скрость в пространстве-времени = const.
Более быстрое движение в пространстве - более медленное во времени.
некая дата+некая дата = сумма по модулю дат от некой точки отсчета.
т.е. дата, которая была бы для наблюдателя смотрящего в систему отсчета, движущейся в пространстве со скоростью такой, что во времени это будет
ровно в 2раза медленнее.


> Anatoly Podgoretsky ©   (17.09.10 11:35) [41]

да бросил
опять :)


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

тогда получаем дату, в которую человек рожденный сейчас будет вдвое меня моложе.


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

почему именно рожденный сейчас?

2. рожденный сейчас реально будет вдвое моложе тебя гораздо раньше чем сумма твоих ДР


 
12 ©   (2010-09-17 12:18) [45]


> 1. я не понял связи. поч

пусть я родился 30 лет от РХ 1 января.  эта дата плюс эта дата = 60 лет от РХ.
если человек родился когда мне было 30, т.е. вот когда  это сейчас, на момент меня тогдашнего.


> 2. рожденный сейчас реально будет вдвое моложе тебя гораздо
> раньше чем сумма твоих ДР

не спорю.

Надоело вообще спорить.

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

Например, какой смысл сложить даты отсечения какому-то царю башки?
никакого.
а если это и есть период полураспада какого-нибудь ядренного вещества

и вообще, это шутка была. поначалу.
а потом развивать пытаюсь. А ты губишь м.б. Энштейна, ну и как тебе не ай-ай-ай?


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


> пусть я родился 30 лет от РХ 1 января.  эта дата плюс эта
> дата = 60 лет от РХ.
> если человек родился когда мне было 30, т.е. вот когда  
> это сейчас, на момент меня тогдашнего.


Есть дата, есть временной интервал.
Блин, ну ты-ж математику заканчивал вроде, не?


 
Anatoly Podgoretsky ©   (2010-09-17 12:22) [47]

> 12  (17.09.2010 11:48:43)  [43]

> тогда получаем дату, в которую человек рожденный сейчас будет вдвое меня
> моложе.

Вывод неверныЙ, складываются не интервалы, а даты, скажем родился в 2000
год, и сегодняняя проверка покажет 4010 лет, а это не в два раза


 
Anatoly Podgoretsky ©   (2010-09-17 12:23) [48]


> да бросил
> опять :)

Грустным помрешь, сегодня.


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

> 12  (17.09.2010 12:18:45)  [45]

> Мысль была такая - дата, суть засечка на оси времени, т.е. вполне
> характеризует некий Период, а именно - от начала отсчета.

Например отметка на градуснике 36 и 38 градусов, C1 + C2 получается, что
температура в 74 градуса, а она другая. А вот 38-36 разница в два градуса.

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


 
12 ©   (2010-09-17 12:43) [50]

да все я прекрасно понимаю

предлагаю отойти от шаблона просто (и никого вроде не задевая, не?)

скажите, что такое дата?
я понимаю это так, что любая дата - суть временной интервал.
Иначе она бессмысленна.
Дата - это сколько прошло времени от т.начала отсчета времени до события, которому присвоили эту дату.

понятно, что день падения бастилии + он же = херня.
вернее, мы не знаем чему равно. не наступило еще.
А вот гибель Цезаря + гибель Цезаря = вполне определенное событие. Не могло же так быть, что в тот день ничего не произошло вообще :)


 
Anatoly Podgoretsky ©   (2010-09-17 12:51) [51]

> 12  (17.09.2010 12:43:50)  [50]

> я понимаю это так, что любая дата - суть временной интервал.

Ничего подобного, это отметка на временной шкале, а для интервала нужны две
отметки и складывать их бессмысленно. Иначе получается
Летели два крокодила, один зеленый, а другой в Африку.


 
Ega23 ©   (2010-09-17 12:54) [52]


> я понимаю это так, что любая дата - суть временной интервал.


Дата - это метка на данной временной шкале. Если с сотворения мира - это одно. Если от РХ - другое. Если от Дня Рождения Васи Пупкина - это третье.

Как температура. Есть температура, при которой в нормальных условиях замерзает вода. Это либо 273 К, либо 0 С, либо 32 F.
Цифры все разные, но температура замерзания воды не изменится.


 
12 ©   (2010-09-17 13:03) [53]


> Ничего подобного, это отметка на временной шкале, а для
> интервала нужны две
> отметки
и складывать их бессмысленно.

вот!
две нужны. А как первую поставить? Относительно т. начала отсчета.

а она

> Если с сотворения мира - это одно. Если от РХ - другое.
> Если от Дня Рождения Васи Пупкина - это третье

Значит, на момент ее нанесения, точка начала отсчета была известна.
Иначе, она была нанесена бессмысленно.
Вот и есть 2 точки. Начало отсчета и нанесенная.


> температура.

Это удар ниже пояса - этого даже кто понимает не могут рассказать понятно :)


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

вот!
две нужны. А как первую поставить? Относительно т. начала отсчета.


Ты путаешь две путаницы.
Есть дата сама по себе. Момент времени. Независимо от летоисчисления.

Есть календарная дата в какой-то из систем.

Дык ты сложи не вторые две даты (календарные листки). А первые две даты.

Расматривай их как моменты времени.

А календарная дата - это просто модель некоего абсолютного момента времени.


 
Ega23 ©   (2010-09-17 13:11) [55]


> Это удар ниже пояса - этого даже кто понимает не могут рассказать
> понятно :)

Почему не могут?


 
12 ©   (2010-09-17 13:23) [56]


> Почему не могут?

слова физическая величина, характеризующая кинетическую энергию частиц макроскопической системы
делают понятнее, конечно.
Но, вот например, открыл холодильник - дыхнуло оттуда холодом. Ощущаешь кожей, т.к.
А теперь если доходчиво объяснить..
кинетическая энергия частиц там меньше. Они медленнее летают. И чего?
меньше долбают по коже что-ли или как?
За счет чего чувствуешь, что холодильник открыл?
(ну и ладно, это для другой конфы тема :) к тому же уже была вроде..)


> Есть дата сама по себе. Момент времени. Независимо от летоисчисления.

Простите, но нет такой.
От Большого Взрыва, хотя бы, но есть.


 
Ega23 ©   (2010-09-17 13:29) [57]


> кинетическая энергия частиц там меньше. Они медленнее летают.


А как же излучение? :)
Там не только кинетическая энергия частиц.


 
Anatoly Podgoretsky ©   (2010-09-17 13:38) [58]

> 12  (17.09.2010 13:03:53)  [53]

Не обязательно, поскольку вторую отметку уже можно наносить относительно
первой, и знание начала отсчета не требуется.

А ведь есть люди которые пытаются складывать температуру, а чем они
отличаются от тех, кто складывает даты?


 
Anatoly Podgoretsky ©   (2010-09-17 13:39) [59]

> 12  (17.09.2010 13:23:56)  [56]

Глубокое заблуждения о начальной точке, шкала времени не имеет начала и
конца, она бесконечна.


 
Ega23 ©   (2010-09-17 13:47) [60]


> Глубокое заблуждения о начальной точке, шкала времени не
> имеет начала и
> конца, она бесконечна.


Нет, она Big Bang-ом ограничена.


 
Anatoly Podgoretsky ©   (2010-09-17 13:50) [61]

> Ega23  (17.09.2010 13:47:00)  [60]

А что было до BigBang неужели как в библии?


 
12 ©   (2010-09-17 13:52) [62]


> Глубокое заблуждения о начальной точке, шкала времени не
> имеет начала и
> конца, она бесконечна.

а Энштейн, кажется, с тобой не согласен

И если вы оба давали бы совет по delphi - выбрал бы твои.
А тут.. не думаю, что выбор не изменится  :)


> А как же излучение? :)

да фиг его знает..
не все тут чисто, вот в отпуск пойду - разберусь и доложу :)


 
Ega23 ©   (2010-09-17 13:53) [63]


> А что было до BigBang неужели как в библии?

Вопрос "Что было до сотворения мира?" лишён всякого смысла, ибо время было сотворено вместе с миром.


 
Anatoly Podgoretsky ©   (2010-09-17 14:12) [64]

> Ega23  (17.09.2010 13:53:03)  [63]

Сначало было ничто, потом бог соотворил твердь


 
12 ©   (2010-09-17 14:18) [65]

не, время_пространство, суть одно целое.
Без одного нет второго.

Большой взрыв породил не только пространство, но и время. Точнее - время_пространство.


 
12 ©   (2010-09-17 14:22) [66]

вот как сказал сам Э.

В общей теории относительности  структура пространства—времени определяется распределением масс материи. Когда корреспондент американской газеты "Нью-Йорк Тайме" спросил Эйнштейна в апреле 1921 г., в чём суть теории относительности, он ответил: "Суть такова: раньше считали, что если каким-нибудь чудом все материальные вещи исчезли бы вдруг, то пространство и время остались бы. Согласно же теории относительности вместе с вещами исчезли бы и пространство, и время".


 
абизяна   (2010-09-17 14:39) [67]


> Anatoly Podgoretsky ©   (17.09.10 13:38) [58]
>
> А ведь есть люди которые пытаются складывать температуру,
>  а чем они
> отличаются от тех, кто складывает даты?


А как же средняя температура по больнице? :-)


 
Anatoly Podgoretsky ©   (2010-09-17 15:00) [68]

> абизяна  (17.09.2010 14:39:07)  [67]

Эти не только складывают, но еще и делят и это же можно делать и для дат,
получишь среднею дату.


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


> Макс Черных   (16.09.10 22:03) [26]

Макс, так ты же сам мои слова и подтвердил.
:o)



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

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

Наверх




Память: 0.65 MB
Время: 0.01 c
15-1283932268
boriskb
2010-09-08 11:51
2010.12.26
Опять "Academia"


2-1285908107
JohnKorsh
2010-10-01 08:41
2010.12.26
ComboBox, свойства.


15-1284634047
Kerk
2010-09-16 14:47
2010.12.26
Обладателям девайсов на Android


2-1285973896
Ghost del vonte
2010-10-02 02:58
2010.12.26
Графика


2-1274640351
vegarulez
2010-05-23 22:45
2010.12.26
Докачка файлов через idhttp.