Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/65: Рейтинг темы: голосов - 65, средняя оценка - 4.86
Автор FAQ
 Аватар для RNT
3150 / 370 / 3
Регистрация: 08.08.2009
Сообщений: 1,126

Вычитание TDateTime

05.09.2009, 15:07. Показов 13491. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Положил я на форму кнопку и шесть TLabel . В обработчике нажатия кнопки написал следующее:
C++
1
2
3
4
5
6
7
8
9
10
11
    TDateTime *dt1=new TDateTime(), *dt2=new TDateTime(), *dt3=new TDateTime();
    *dt1=Now();   //Узнаю время и дату
    Sleep(10000);
    *dt2=Now();   //Узнаю время и дату через 10 секунд
    *dt3=*dt2-*dt1;   //Узнаю сколько времени прошло
    Label1->Caption=(YearOf(*dt3));  //Вывожу сколько лет прошло
    Label2->Caption=(MonthOf(*dt3));  //Вывожу сколько месяцев прошло
    Label3->Caption=(DayOf(*dt3));   //Вывожу сколько дней прошло и т.д.
    Label4->Caption=(HourOf(*dt3));
    Label5->Caption=(MinuteOf(*dt3));
    Label6->Caption=(SecondOf(*dt3));
Результаты выполнения этого кода можно увидеть на скриншоте. Не пойму , как за 10 сек. могло пройти 1899 лет, 12 месяцев, и 30 дней ? Часы , минуты и секунды показывает правильно. Помогите. Не могу понять в чем дело. Во вложении проект С++ Builder 2009.
Миниатюры
Вычитание TDateTime  
Вложения
Тип файла: rar Сравнение времени и даты.rar (11.3 Кб, 82 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.09.2009, 15:07
Ответы с готовыми решениями:

TdateTime
Подскажите как сделать: есть разность двух дат dtTime = StrToTime(StringGrid1->Cells) - StrToTime(StringGrid1->Cells); Вопрос: как...

TDateTime
Подскажите, пожалуйста, как записать значения типа TDateTime TDateTime datetime1 = 21.05.2013 23:08:36; Так компилятор матерится...

TDateTime обрезает 00:00:00
Здравствуйте Есть txt-файл с точками времени: 2018.04.09 00:00:00.120 2018.04.09 00:00:01.289 2018.04.09 00:00:02.845 и т. д. ...

29
125 / 116 / 17
Регистрация: 27.02.2007
Сообщений: 291
06.09.2009, 16:58
Студворк — интернет-сервис помощи студентам
Так какая же проблема с изменением времени пользователем? От каких действий пользователя надо защищаться?
А то можно время менять и в Setup BIOC. Это уж ни как не отследиш.

Добавлено через 31 минуту
Цитата Сообщение от АНК Посмотреть сообщение
Setup BIOC
Конечно же BIOS
0
Автор FAQ
 Аватар для RNT
3150 / 370 / 3
Регистрация: 08.08.2009
Сообщений: 1,126
06.09.2009, 19:56  [ТС]
Я пока еще не знаю точно какую прогу буду делать . К примеру я сделал программу , состоящую из двух частей , клиент и сервер . Сервер ставится на комп юзверя и работает невидимо . Я запускаю клиент , ввожу IP сервера , и отправляю список процессов , подлежащих убиению . Сервер получает список , сохраняет его , и убивает процессы из списка каждые 10 сек. Чтобы отменить убиение программ, надо запустить клиент , и отправить пустой список . Хочется сделать так , чтобы можно было отправить число минут , через которое процессы автоматически перестанут убиваться. Но для этого на компе с сервером должно быть стабильное время и дата. Можно еще придумать какие нибудь подобные программы . В любом случае надо сначала обеспечить стабильное время и дату. P.S. Если интересно, во вложении исходники описанной проги
Цитата Сообщение от АНК Посмотреть сообщение
А то можно время менять и в Setup BIOS. Это уж ни как не отследиш.
Не думаю что всякий юзверь до этого додумается . Можно еще корректировать время и дату при помощи сервера времени. Но это уже другая тема...
Вложения
Тип файла: rar Stable 7.rar (32.2 Кб, 21 просмотров)
0
Автор FAQ
 Аватар для RNT
3150 / 370 / 3
Регистрация: 08.08.2009
Сообщений: 1,126
06.09.2009, 21:45  [ТС]
Помогите... Очень нужен ответ на
третий
Сравнивать структуру , в которой хранится время и дата , с количеством милисекунд , которое прошло с момента включения компа (GetTickCount) неудобно . Можно написать код, который преобразует структуру в число милисекунд или секунд и запишет в переменную типа UInt64 . Но ведь есть високосный год, который усложняет преобразование. Есть ли функция , при помощи которой можно получить время и дату сразу в секундах или милисекундах ?
вопрос
0
Эксперт С++
 Аватар для schdub
3073 / 1411 / 425
Регистрация: 19.01.2009
Сообщений: 3,894
06.09.2009, 23:10
Вот еще одна версия сравнения двух дат
C++
1
2
3
4
5
6
7
8
9
10
11
        TDateTime *dt1=new TDateTime(), *dt2=new TDateTime();
        *dt1=Now();   //Узнаю время и дату
        Sleep(10000);
        *dt2=Now();   //Узнаю время и дату через 10 секунд
 
        Label1->Caption=(YearsBetween(*dt1, *dt2));
        Label2->Caption=(MonthsBetween(*dt1, *dt2));
        Label3->Caption=(DaysBetween(*dt1, *dt2));
        Label4->Caption=(HoursBetween(*dt1, *dt2));
        Label5->Caption=(MinutesBetween(*dt1, *dt2));
        Label6->Caption=(SecondsBetween(*dt1, *dt2));
1
Автор FAQ
 Аватар для RNT
3150 / 370 / 3
Регистрация: 08.08.2009
Сообщений: 1,126
06.09.2009, 23:31  [ТС]
polivets, спасибо вам большое ! Это как раз то что надо , даже лучше чем
то что я искал
функция , при помощи которой можно получить время и дату сразу в секундах или милисекундах
.
Спасибо всем за полезные советы !
0
 Аватар для FreeWay
84 / 84 / 19
Регистрация: 17.12.2007
Сообщений: 574
09.09.2009, 12:18
Цитата Сообщение от RNT Посмотреть сообщение
как узнать разницу между замерами ?
вот пример:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
AnsiString GetDate(int);
 
WorkFrom                 ="10:00:00"; 
 
if(  ( (GetDate(1)!=WorkFrom) )  )
   {
         //to do...
   }
 
 
 
////////// GetDate
AnsiString GetDate(int DateParam)
{
  String DateTime;
 
 if (DateParam==0)
   {
     DateTime= DateToStr(Now());
   }
 
 if (DateParam==1)
   {
     DateTime= TimeToStr(Now());
   }
 
 if (DateParam==2)
   {
     DateTime= DateTimeToStr(Now());
   }
 
 return DateTime;
}
0
Автор FAQ
 Аватар для RNT
3150 / 370 / 3
Регистрация: 08.08.2009
Сообщений: 1,126
09.09.2009, 17:28  [ТС]
Цитата Сообщение от FreeWay Посмотреть сообщение
if( ( (GetDate(1)!=WorkFrom) ) )
if не узнает разницу между замерами а сравнивает текущую дату с "10:00:00" . Какой толк ?
0
 Аватар для FreeWay
84 / 84 / 19
Регистрация: 17.12.2007
Сообщений: 574
10.09.2009, 09:34
Цитата Сообщение от RNT Посмотреть сообщение
if не узнает разницу между замерами а сравнивает текущую дату с "10:00:00" . Какой толк ?
да, в торопях написал, вот пример как разницу получить:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
TDateTime DateTimeFirst;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
Label1->Caption=DateTimeToStr(Now());
DateTimeFirst=DateTimeToStr(Now());
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 
String date= DateTimeToStr(Now());
Label2->Caption=DateTimeFirst-date;
}
0
Автор FAQ
 Аватар для RNT
3150 / 370 / 3
Регистрация: 08.08.2009
Сообщений: 1,126
10.09.2009, 11:05  [ТС]
FreeWay, результат выполнения вашего кода такой-же (30.12.1899 0:00:17) , как в первом посту этой темы. Тоесть неправильный

Добавлено через 7 минут
Label2->Caption=DateTimeFirst-date;
Это значит TDateTime- String , странно как-то . Из даты вычитать строку...

Добавлено через 7 минут
Вопрос уже решен вот сдесь . Хотя я не против чего-то новенького .
0
constructorrrr
05.11.2009, 02:43
А потом бедный пользователь замучится с переходом на летнее время, и будет проклинать вашу прогу... Если конечно догадается, кто такой жестокий шутник.

Но я знаю куда более интересные пакости. Например подергивание мышой. Если делать это не навязчиво, пользователь будет старательно чистить коврик, мышь, пока не плюнет и не купит новую мышь... Ха-ха..

Ну про такие веселые штучки, как остановка кулера я даже говорить не буду.

Да, а еще можно просто повесить прогу в трее с каким то бессмысленным содержанием и страшным названием вроде svhost и пусть она себе жрет процессорное время -- то много то мало. То-то пользователь порадуется, когда его новый комп будет полчаса грузить ворд.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.11.2009, 02:43

TDateTime c миллисекундами
Блин, не помню как в билдере когда-то конвертировал текст в TDateTime с миллисекундами :( Вроде бы так, но тут отрезаются...

TDateTime: изменение
Добрый день! Столкнулся с следующей проблемой. Заархивировал файл. Распаковал. Использую механизм сравнения через Val. Дата и время...

Количество часов из TDateTime
Как узнать количество часов из разницы между одной переменной TDateTime и другой. Например: TDateTime...

TDateTime и обычная дата
как преобразовать дату вида дд.мм.гггг в дату вида TDateTime?

TDateTime - разница времени
int hh,hh1,min,min1,sec,sec1,msec,msec1; hh=StrToInt(Edit1-&gt;Text); hh1=StrToInt(Edit2-&gt;Text); min=StrToInt(Edit3-&gt;Text); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. Сразу отвечу: А в PvP с ним. . .
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru