Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
3-1250065947
RDen
2009-08-12 12:32
2010.12.26
Доброго всем времени суток.


2-1285833478
Jacksotnik
2010-09-30 11:57
2010.12.26
Помогите с запросом


15-1284701719
Zenith
2010-09-17 09:35
2010.12.26
Библиотека для быстрых операций с массивами


15-1284489244
0x00FF00
2010-09-14 22:34
2010.12.26
Реклама Delphi на ВМК


2-1285829767
TheEd
2010-09-30 10:56
2010.12.26
Как сменить курсор во время OnMouseDown





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский