Форум: "Прочее";
Текущий архив: 2010.12.26;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.005 c