Последние записи
- Рандомное слайдшоу
- Событие для произвольной области внутри TImage
- Удаление папки с файлами
- Распечатка файла
- Преобразовать массив байт в вещественное число (single)
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
20th
Июл
Формат TDateTime выдает неверный результат, если дата менее 30 декабря 1899 года
Posted by obzor under Delphi
Формат TDateTime выдает неверный результат, если дата менее 30 декабря 1899 года:
procedure TForm1.Button1Click(Sender: TObject);
var t: TDateTime;
s: string;
begin
Memo1.Clear;
t:=-3;
repeat
s:=FormatDateTime('dd.mm.yyyy hh:nn:ss', t);
Memo1.Lines.Add(Format('%.5f = %s', [t, s]));
t:=t+1/24;
until t>=3;
end;
Как так? Есть ли корректный способ отображения?
Читаем про данный формат тут — http://www.delphibasics.ru/TDateTime.php
Тип TDateTime содержит значение даты и времени.
Она сохраняется как переменная Double, с датой как целая часть, а время как дробная. Дата сохраняется как число дней с 30 декабря 1899. Не понятно, почему не 31 декабря. 01 января 1900 имеет значение 2.
Поскольку TDateTime фактически является Double, то вы можете выполнять над ним вычисления, как будто это было число. Это очень полезно для вычислений типа разницы между двумя датами.
Для работы с датой и временем можно создать свой собственный тип:
type TMyDateTime = record
Day: 1..31;
Month: 1..12;
Year: Integer;
Hours: 0..23;
Minutes: 0..59;
Seconds: 0..59;
end;
Ну и дальше реализовать над ним необходимые операции (при желании это все можно оформить в виде класса).
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)