Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2009, 21:04   #1
Dj_smart
Капсула от спама
Форумчанин
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Сообщений: 779
По умолчанию Подсчитать количество дней имея дату

Доброго времени суток уважаемые программисты.
Как подсчитать количество дней с начала системы отсчета (по моему это 1 ноября 1899 года) по определенную дату?
Дело в том, что простым циклом не переберешь, уж болно высокая потребительность будет из-за того, что вмешиваются такие вещи как высокосный год и 29-31 день в месяце, да и не этично это
По-моему должны быть какие-то функции, но я такой не нашёл.
Заранее спасибо.
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг
Dj_smart вне форума Ответить с цитированием
Старый 21.03.2009, 21:07   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Разность между датами уже рассматривалась много раз.
Переведите обе даты в числа - разница между ними и есть количество дней...
Используемая функция - StrToDate.
mihali4 вне форума Ответить с цитированием
Старый 21.03.2009, 21:09   #3
Dj_smart
Капсула от спама
Форумчанин
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Сообщений: 779
По умолчанию

Цитата:
Переведите обе даты в числа
Дык это и есть суть сабжа. Как?
-----------
Ладно, т.к. стараюсь не флудить - я имею дату. Вами предложенная фунция преобразует строку в дату. Мне же нужно дату в число
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг

Последний раз редактировалось Dj_smart; 21.03.2009 в 21:12.
Dj_smart вне форума Ответить с цитированием
Старый 21.03.2009, 21:11   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

???
Повторюсь: Используемая функция - StrToDate.
Например:
Код:
Label1.Caption:=IntToStr(Round(StrToDate('21.03.2009')));
Можно использовать еще EncodeDate...
И для нее тоже в хэлпе есть примеры на Дельфи...

Последний раз редактировалось mihali4; 21.03.2009 в 21:18.
mihali4 вне форума Ответить с цитированием
Старый 21.03.2009, 21:15   #5
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

есть модуль dateutils ,где вы найдете множество полезных функций по работе с датами.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 21.03.2009, 21:34   #6
Dj_smart
Капсула от спама
Форумчанин
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Сообщений: 779
По умолчанию

Да, да, да, спасибо есть такая функция на примете - DaysBetween.
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг
Dj_smart вне форума Ответить с цитированием
Старый 22.03.2009, 11:00   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Dj_smart, если даты в формате TDatetime
(type TDateTime = type Double
то для получения разности двух дат достаточно отнять целые части этих переменных:
Код:
  T1:=EncodeDate(2009,3,1);
  T2:=Now;
  ShowMessage(IntToStr(Trunc(T2)-Trunc(t1)))
а в случае отсчёта от 0 (12/30/1899 12:00 am)
вообще достаточно Trunc(ВашаДата)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.03.2009, 12:46   #8
Andrei
Форумчанин
 
Регистрация: 20.06.2007
Сообщений: 270
По умолчанию

Цитата:
Сообщение от Dj_smart Посмотреть сообщение
...
Как подсчитать количество дней с начала системы отсчета (по моему это 1 ноября 1899 года) по определенную дату?
..
TDateTime F1 :



Цитата:
Delphi syntax:

type TDateTime = type Double;

Description

Most CLX objects represent date and time values using a TDateTime value. In Delphi, TDateTime is a type that maps to a Double. In C++, the TDateTime class corresponds to the Delphi TDateTime type.

The integral part of a Delphi TDateTime value is the number of days that have passed since 12/30/1899. The fractional part of the TDateTime value is fraction of a 24 hour day that has elapsed.

То есть целая часть значения TDateTime собственно и представляет интересующее вас значение.
-Кукушка, кукушка! Накукуй мне сто лет!
-А накукуй тебе столько?

(с) Библия. Вольный перевод с древнееврейского.
Andrei вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите подсчитать количество дней komar73 Microsoft Office Excel 2 09.02.2009 09:54
Отредактируйте,пожалуйста,задачу на записи, вычисляющую дату через m дней. JiLiYa Паскаль, Turbo Pascal, PascalABC.NET 2 26.12.2008 09:29
Количество дней в месяце по диапазону дат VadimSh Microsoft Office Excel 6 26.11.2008 23:48
Добавление кол-во дней в дату D@rk M@k Общие вопросы Delphi 1 19.04.2008 10:19