![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Разница между датами [D7, XP]
Andy BitOff (ppc) © (2007-11-08 13:07:00)
Страницы: < 1 2 3 4 5 6 7 8 9 >
Здравствуйте.
Что-то у меня уже башка не варит, сижу парюсь и шарики за ролики заходят...
Никак не удается получить разничу между датами в формате dd.mm.yy.
Например.
05.11.2007 и 08.11.2007 должно получиться 03.00.00, но при работе с типом дата месяц (как и год) не может быть равен 0.
Может кто подскажет как это можно реализовать?
Dib@zol (2007-11-09 11:12:00) [81]Рискну предположить: а если вычислить кол-во дней между датами, а потом отнять от него сначала кол-во дней в январе, затем в феврале бОльшего года, затем - в марте итд пока количество дней не станет меньше количества дней в том месяце, чьи дни отнимаем. Если все месяцы отняты, а дни ещё не кончились, прибавляем год. И февраль уже считаем по [больший_год - 1] году. Ет цетера.
Может подойдёт?
korneley (2007-11-09 11:04:00) [82]
> Anatoly Podgoretsky © (09.11.07 10:54) [80]
> > korneley (09.11.2007 10:33:17) [77]
>> а с первого числа
>> любого месяца по последнее - один месяц". Во как.
> С чего бы
А хотя бы с того, что название месяца не изменилось :) Рискну повторить еще раз: если надо узнать разницу дат в днях.месяцах.годах, то и оперировать надо днями, месяцами и годами, а не количеством пройденных дней.
ЮЮ (2007-11-09 10:59:00) [83][80] Anatoly Podgoretsky © (09.11.07 10:54)
> С чего бы
Т.е. месяц февраль, это не только с 1 по последнее число февраля, но и последний день января и первый день марта?
Думкин (2007-11-09 10:56:00) [84]> Anatoly Podgoretsky © (09.11.07 10:52) [79]
А зачем мне это адресовывать? Я вопроса не задавал и не отвечал. Я лишь заметил, что год и день стоят не на тех местах.
Anatoly Podgoretsky (2007-11-09 10:54:00) [85]> korneley (09.11.2007 10:33:17) [77]
> а с первого числа любого месяца по последнее - один месяц". Во как.
С чего бы
Anatoly Podgoretsky (2007-11-09 10:52:00) [86]> Думкин (09.11.2007 10:15:14) [74]
Что бы нагляднее
28.02.1996 - 28.02.1995 = 0.0.1 ???
29.02.1996 - 28.02.1995 = 0.0.1 ???
и
28.02.1997 - 28.02.1996 = 0.0.1
28.02.1997 - 29.02.1996 = ?
korneley (2007-11-09 10:40:00) [87]Поэтому получаем год = 12 месяцев, и по барабану сколько в этих месяцах дней. В [63] такой подход озвучен, правда только подход, сам пример нерабочий, потому что, если из 9 - го месяца вычесть 10 - й будет не -1, а 12 месяцев.
korneley (2007-11-09 10:33:00) [88]Неожиданно подумалось:" Если мы оперируем абстрактными "год" и "месяц", то со второгого марта по первое (включительно) пройдет одингод, независимо от того, високосный он или нет, а с первого числа любогомесяца по последнее - один месяц". Во как.
ЮЮ (2007-11-09 10:31:00) [89]> [72] SergeyIT (09.11.07 10:06)
> По-моему так
По моему лучше так:
0.0.1 = 27.02.1996 - 28.02.1995, т.к. с 28.02.1995 по 27.02.1996 (включительно) ровно 1 год.
Соответственно, для 28.02.1995, имеем
1.0.1 - 28.02.1996
2.0.1 - 29.02.1996
3.0.1 - 01.03.1996
...
0.1.1 - 27.03.1996
Кажеттся, что затруднения возникают, когда дней месяце начала перриода больще, чем дней конца перриода.
Что считать "ровно через месяц", начиная с 31.01, а с 30.01.
Но с доугой стороны имеет место
30.01 ... 29.02 = 0.1.x
тогда
31.01 ... 29.02 = 30.0.x (ну и что что в феврале 30 дней не бывает, зато функция однозначная ддя любой даты)
Johnmen (2007-11-09 10:20:00) [90]
> Думкин © (09.11.07 10:15) [74]
> 1 год. :)
А-а-а... У него года в конце.
> SergeyIT (09.11.07 10:06) [72]
> По-моему так
> 29.02.1996 - 28.02.1995 = 0.0.1
> 28.02.1996 - 28.02.1995 = 0.0.1
А это как понимать? Куда сутки исчезли?
Думкин (2007-11-09 10:15:00) [91]
> Johnmen © (09.11.07 10:13) [73]
1 год. :)
Johnmen (2007-11-09 10:13:00) [92]
> SergeyIT (09.11.07 10:06) [72]
> По-моему так
> 29.02.1996 - 28.02.1995 = 0.0.1
Т.е. всего 1 (одни) сутки разницы???
Мило...:)
Johnmen (2007-11-09 10:06:00) [93]
> SergeyIT (09.11.07 09:47) [69]
Я, конечно понимаю, что чукча не читатель, чукча писатель, но попробую ещё раз, последний:
1.
SergeyIT © (08.11.07 18:07) [28]
Надо проверять.
SergeyIT (08.11.07 22:18) [42]
01.01.2004 - 29.02.2004 = ошибка в Дельфи5
Как я и говорил - надо проверять.
Johnmen © (09.11.07 01:21) [52]
Вы пока только повествуете о какой-то мифической функции. Которая якобы работает без runtime ошибок и якобы выводит достоверные данные.
Где работающаяф-ия, выдающая достоверныерезультаты?
2.
15.06.2007 - 16.07.2007 = ?
15.06.2007 - 17.07.2007 = ?
15.07.2007 - 16.08.2007 = ?
15.07.2007 - 17.08.2007 = ?
SergeyIT (2007-11-09 10:06:00) [94]По-моему так
29.02.1996 - 28.02.1995 = 0.0.1
01.03.1996 - 28.02.1995 = 1.0.1
и так
28.02.1996 - 28.02.1995 = 0.0.1
Эти исключения надо решить, как обработать - это к автору темы - смотря что ему надо
Думкин (2007-11-09 09:57:00) [95]> SergeyIT (09.11.07 09:47) [69]
Вы бы все-таки ответили на его 19 пост. А то некрасиво как-то.
SergeyIT (2007-11-09 09:47:00) [96]
> Johnmen © (09.11.07 01:21) [52]
>
> Прошу заметить, что Вы пока только повествуете о какой-то
> мифической функции. Которая якобы работает без runtime ошибок
> и якобы выводит достоверные данные. При этом самой ф-ии
> не приводите.
А не пора ли Вам проснуться? - пост [28] с учетом [47].
Думкин (2007-11-09 09:29:00) [97]> Skyle © (09.11.07 09:08) [66]
У тебя не так интересно. A вот с кодом того, кому писал - это интереснее выходит. Для 1 марта.
Leonid Troyanovsky (2007-11-09 09:20:00) [98]
> Skyle © (09.11.07 09:08) [66]
> Я подобный вопрос задал ещё в [2]. Автор не хочет уточнить
> :(
Дык, он же не в состоянии (см. анамнез),
у него ж паралич мыслительной мышцы.
Кста, видимо, это заразно.
--
Regards, LVT.
Skyle (2007-11-09 09:08:00) [99]
> Думкин © (09.11.07 08:19) [65]
Я подобный вопрос задал ещё в [2]. Автор не хочет уточнить :(
homm (2007-11-09 08:19:00) [100]> Здравствуйте.
> Что-то у меня уже башка не варит, сижу парюсь и шарики за
> ролики заходят...
> Никак не удается получить
Имеено эту фразу видят люди в качестве описания вопроса. Очень емко и информативно, главное сразу понятно что нужно автору, можно даже в ветку не заходить.