![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 | |
Я самый любопытный
Участник клуба
Регистрация: 24.07.2012
Сообщений: 1,978
|
![]()
Здравствуйте!
Формат TDateTime выдает неверный результат, если дата менее 30 декабря 1899 года: Код:
Цитата:
|
|
![]() |
![]() |
![]() |
#2 | |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,810
|
![]() Цитата:
Тип TDateTime содержит значение даты и времени. Она сохраняется как переменная Double, с датой как целая часть, а время как дробная. Дата сохраняется как число дней с 30 декабря 1899. Не понятно, почему не 31 декабря. 01 января 1900 имеет значение 2. Поскольку TDateTime фактически является Double, то вы можете выполнять над ним вычисления, как будто это было число. Это очень полезно для вычислений типа разницы между двумя датами. Для работы с датой и временем можно создать свой собственный тип: Код:
E-Mail: arigato.freelance@gmail.com
Последний раз редактировалось Arigato; 11.07.2021 в 11:30. |
|
![]() |
![]() |
![]() |
#3 |
Я самый любопытный
Участник клуба
Регистрация: 24.07.2012
Сообщений: 1,978
|
![]()
Я имею в виду, что дата и время, например, 30.12.1899 02:00:00 = -0,08333 = 0,08333 - одновременно и положительное число и отрицательное число.
Последний раз редактировалось newerow1989; 11.07.2021 в 11:49. |
![]() |
![]() |
![]() |
#4 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,810
|
![]()
Ну это объяснимо. Если дата это целая часть, а 0 это 30.12.1899, то тут знак не играет роли, так как целая часть +0 и -0 одно и тоже. А дробная часть просто игнорируется. Получается что 30 декабря 1899 года имеет как бы две копии. Но, как мне кажется, тип TDateTime лучше не использовать для дат до 30.12.1899.
E-Mail: arigato.freelance@gmail.com
|
![]() |
![]() |
![]() |
#5 |
Я самый любопытный
Участник клуба
Регистрация: 24.07.2012
Сообщений: 1,978
|
![]()
Придется дополнительно программировать тип TDateTime для дат до 30.12.1899 года...
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перевод строки в TDateTime | exyl | Общие вопросы Delphi | 21 | 11.03.2018 19:44 |
Unix время в TDateTime | Adult_Master | Общие вопросы Delphi | 1 | 19.10.2017 07:35 |
string to TDateTime | NieL | Общие вопросы Delphi | 2 | 30.03.2009 18:43 |
Variant в TDateTime | SoLL | Общие вопросы Delphi | 2 | 13.02.2009 11:49 |