Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> работа с датой, порядковый номер дня 
:(
    Опции темы
POLLAB
Дата 14.8.2005, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 2.4.2005

Репутация: нет
Всего: нет



Каким образом можно выяснить порядковый номер текущего дня от Рождества Христова. Существует ли соответствующая функция на этот счет ? Заранее благодарен :-)
PM MAIL   Вверх
vadims
Дата 14.8.2005, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 8.6.2005

Репутация: нет
Всего: 17



Могу ошибиться но помоему TDateTime(0) - 12/30/1899 12:00 am
Дальше там секунды от 0-го значения
А уж от 12/30/1899 12:00 am вниз - это самому считатать

Но вполне допускаю что есть более цивилизованные решения



--------------------
Cpu not found ! Press any key for software emulation.
PM MAIL   Вверх
POLLAB
Дата 14.8.2005, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 2.4.2005

Репутация: нет
Всего: нет



Буду пробовать. Спасибо.
PM MAIL   Вверх
mvdr
Дата 14.8.2005, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


физик
***


Профиль
Группа: Участник
Сообщений: 1349
Регистрация: 31.12.2004
Где: Волгоград, Россия

Репутация: 1
Всего: 42



да-а, биз даты никто не может обойтись smile

А вообще: руками просчитать...


--------------------
Появляюсь редко, но часто метко

Изображать идиота сложнее, чем изображать умного: полезнее и не каждому дано
PM ICQ   Вверх
POLLAB
Дата 14.8.2005, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 2.4.2005

Репутация: нет
Всего: нет



Попробовал - не то. Поискал - нашел :

Код
//количество дней, прошедших с 1 января 0001г.
procedure TForm1.Button1Click(Sender: TObject);
var
D : TTimeStamp;
begin
D := DateTimeToTimeStamp(Date);
Label1.Caption := FloatToStr(D.Date);
end;


//всем спасибо.

Это сообщение отредактировал(а) Alex - 14.8.2005, 19:07
PM MAIL   Вверх
Vet
Дата 16.8.2005, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 24.2.2005

Репутация: нет
Всего: нет



А если в DateUtils заглянуть?
PM MAIL   Вверх
Poseidon
Дата 16.8.2005, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Воть, писал как-то для себя, но оказывается не только мне нужно smile

Код
...
var
  Form1: TForm1;

  DayInMonth: array[1..12] of Shortint = (31,28,31,30,31,30,31,31,30,31,30,31);

implementation

{$R *.dfm}

function GetDays(ADate: TDate): ShortInt; // номер дня в году
var
D, M, Y, i: Word;
begin
Result:= 0;
DecodeDate(ADate,Y,M,D);

if Frac(Y/4) = 0 then DayInMonth[2]:= 29;

for i:= 1 to M-1 do Result:= Result + DayInMonth[i];
DayInMonth[2]:= 28;

Result:= Result + D;
end;


{ количество дней от даты до даты }
function AmountOfDays(StartDate, EndDate: TDate): Integer;
var
SDay, SMonth, SYear, EDay, EMonth, EYear: Word;
ConstForm: boolean; // правильное указание
temp: TDate;
i: Shortint;
begin
Result:= 0;

if EndDate >= StartDate
then ConstForm:= True
else
  begin
  ConstForm:= False;
  temp:= StartDate;
  StartDate:= EndDate;
  EndDate:= temp;
  end;

DecodeDate(StartDate,SYear,SMonth,SDay);
DecodeDate(EndDate,EYear,EMonth,EDay);

// дней в годах
if SYear - EYear <> 0 then
for i:= SYear to EYear-1 do
if Frac(i/4) <> 0 then Result:= Result + 365 else Result:= Result + 366;
Result:= Result - GetDays(StartDate);

// дней с начала
Result:= Result + GetDays(EndDate);

if not ConstForm then Result:= -Result;
end;



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
R0nin
Дата 17.8.2005, 02:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 31.7.2005
Где: Минск (Белоруссия )

Репутация: нет
Всего: нет



так у меня работает:
Цитата

procedure TForm1.Button1Click(Sender: TObject);
var
  lt : TSYSTEMTIME;
begin
      GetLocalTime(lt);
  label7.Caption:= IntToStr(lt.wmonth);
  label5.Caption:=  IntToStr(lt.wDay);
  label6.Caption:= IntToStr(lt.wYear);
  label2.Caption:=  IntToStr(lt.wHour);
  label3.Caption:= IntToStr(lt.wMinute);
  end;

можно так же и день недели узнать:
Цитата

procedure TForm1.Button2Click(Sender: TObject);
begin
if DayOfWeek(date) = 2 then
    label1.Caption := 'Сегодня Понедельник!' else if DayOfWeek(date) = 3 then
    label1.Caption := 'Сегодня Вторник!!'    else if DayOfWeek(date) = 4 then
    label1.Caption := 'Сегодня Среда!!'      else if DayOfWeek(date) = 5 then
    label1.Caption := 'Сегодня Четверг!!'    else if DayOfWeek(date) = 6 then
    label1.Caption := 'Сегодня Пятница!!'    else if DayOfWeek(date) = 7 then
    label1.Caption := 'Сегодня Суббота!!'    else
    label1.Caption := 'Выходной Воскресенье!!!';
end;

Вот как то так, и все работает!

--------------------
Фишка есть во всем, а если фишки нет, то это и есть фишка
PM MAIL ICQ   Вверх
ShadeSt
Дата 17.8.2005, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 256
Регистрация: 9.8.2005
Где: Россия, г. Ставро поль

Репутация: нет
Всего: 7



А зачем так много условий

var
..
ndays : array[1..7] of string[20] = ('Воскр','Пон','Вт','Ср','Чт','Тяпница','Суббота');
..

procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(ndays[dayofweek(now)]);
end;




--------------------
It's nice to be importand, but it's more importand to be nice © Scooter
PM MAIL ICQ Jabber   Вверх
Dimannn
Дата 17.8.2005, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 318
Регистрация: 14.4.2005
Где: Владимир

Репутация: нет
Всего: 1



Код

ShowMessage(IntToStr(DaysBetween(Now,StrToDateTime('1.1.0001'))))


Хотя если первый год был нулевой, то прорсто прибавить 365


--------------------
Хотите быстро и без проблем опубликовать вашу программу в сети за 5 минут?
Тогда потратьте пару минут чтобы посмотреть, что предлагает OpenProject.org.ru
PM MAIL ICQ   Вверх
R0nin
Дата 21.8.2005, 08:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 31.7.2005
Где: Минск (Белоруссия )

Репутация: нет
Всего: нет



to ShodeSt Я смысл показал, а впринципе можно и так! smile
--------------------
Фишка есть во всем, а если фишки нет, то это и есть фишка
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0757 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.