
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.175] |
![]() |
|
Сообщ.
#1
,
|
|
|
Здравствуйте.
Вопрос: Есть количество секунд ,мне их нужно перевести в год(лет) месяцев дней как пример Есть 864 345 567 секунд, мне их нужно перевести в год(год(лет), месяцев ,дней). Количество секунд в году 31 536 000 Количество секунд в месяце (хотя месяц может быть 31 день или 30 дней или 28 или 29 дней) 2 678 400(31 день) Количество секунд в сутках 86400 как пример получилось 27 лет 12 месяцев 31 день Что то ни могу сообразить как сделать(что нужно сделать с этими цифрами) .Может кто поможет. Спасибо. |
Сообщ.
#2
,
|
|
|
В дни перевести несложно, для этого достаточно разделить на количество секунд в сутках.
А для получения месяцев и лет нужно знать точку отсчёта, иначе только приближённо можно посчитать. Если известна дата, от которой отсчитывать, то, работая с TDateTime, прибавить к ней Seconds/86400, получить новую дату, и уже смотреть разницу в годах и месяцах (что-то есть в DateUtils) |
Сообщ.
#3
,
|
|
|
Спасибо за помощь.
Количество лет могу получить если 864345567/ 31536000= 27 лет А сколько месяцев и дней не понятно. Да начальная дата есть и к этой дате хочу прибавить количество лет, месячев дней ,получить новую дату ,в зависимости от количества секунд. есть дата 25.12.2024 ,есть количество секунд=864345567 ,и получить новую дату как пример 12.08.2051. Вот нашёл функцию но это не то, то что мне нужно . function secToDHMS(sec: Integer): string; var D, H, M, S, ATime: Integer; begin D := sec div 86400; H := (sec - D * 86400) div 60 div 60; M := (sec - D * 86400 - H * 3600) div 60; S := sec - D * 86400 - H * 3600 - M * 60; Result := Format('%d days %d hours %d minutes %d seconds', [D, H, M, S]); end; Да думаю можно сделать перевести начальную дату в секунды средством TDateTime ,прибавить мои секунды и преобразовать в новую дату средством TDateTime. начальную дату 25.12.2024 перевести в секунды прибавить мои секунды и получить новую дату. Как только это сделать пока не знаю. Спасибо. |
Сообщ.
#4
,
|
|
|
Вы привели несколько разных условий задачи. Последняя, когда даны секунды:
Цитата есть дата 25.12.2024 ,есть количество секунд=864345567 ,и получить новую дату как пример 12.08.2051. элементарная, в прошлом посте я уже подсказал ![]() ![]() Memo1.Lines.Add(DateToStr(StrToDate('25.12.2024')+ 864345567/86400)) 15.05.2052 Задача Цитата Да начальная дата есть и к этой дате хочу прибавить количество лет, месячев дней ,получить новую дату ,в зависимости от количества секунд. поставлена некорректно. Если убрать " зависимости от количества секунд", то функции типа InYear, IncMonth. По формулировке "есть две даты, посчитать точное количество лет и т.д." см. сложность задачи здесь: https://secondboyet.com/Articles/PublishedA...umberofmon.html |
Сообщ.
#5
,
|
|
|
Спасибо Огромное ,заработало как надо ,
Memo1.Lines.Add(DateToStr(StrToDate('25.12.2024')+ 864345567/86400)) оказалось так очень просто. Спасибо за оперативность и помощь. ![]() |