На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> DATE , DATE
    Здравствуйте.
    Вопрос: Есть количество секунд ,мне их нужно перевести в

    год(лет)
    месяцев
    дней
    как пример
    Есть 864 345 567 секунд, мне их нужно перевести в год(год(лет), месяцев ,дней).
    Количество секунд в году 31 536 000
    Количество секунд в месяце (хотя месяц может быть 31 день или 30 дней или 28 или 29 дней) 2 678 400(31 день)
    Количество секунд в сутках 86400
    как пример получилось
    27 лет
    12 месяцев
    31 день



    Что то ни могу сообразить как сделать(что нужно сделать с этими цифрами) .Может кто поможет.

    Спасибо.
    Сообщение отредактировано: tolyan249 -
      В дни перевести несложно, для этого достаточно разделить на количество секунд в сутках.

      А для получения месяцев и лет нужно знать точку отсчёта, иначе только приближённо можно посчитать.

      Если известна дата, от которой отсчитывать, то, работая с TDateTime, прибавить к ней Seconds/86400, получить новую дату, и уже смотреть разницу в годах и месяцах (что-то есть в DateUtils)
      Сообщение отредактировано: MBo -
        Спасибо за помощь.

        Количество лет могу получить если
        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 перевести в секунды прибавить мои секунды и получить новую дату.

        Как только это сделать пока не знаю.



        Спасибо.
        Сообщение отредактировано: tolyan249 -
          Вы привели несколько разных условий задачи. Последняя, когда даны секунды:

          Цитата
          есть дата 25.12.2024 ,есть количество секунд=864345567 ,и получить новую дату как пример 12.08.2051.


          элементарная, в прошлом посте я уже подсказал

          ExpandedWrap disabled
            Memo1.Lines.Add(DateToStr(StrToDate('25.12.2024')+ 864345567/86400))


          15.05.2052


          Задача

          Цитата
          Да начальная дата есть и к этой дате хочу прибавить количество лет, месячев дней ,получить новую дату ,в зависимости от количества секунд.


          поставлена некорректно. Если убрать " зависимости от количества секунд", то функции типа InYear, IncMonth.


          По формулировке "есть две даты, посчитать точное количество лет и т.д." см. сложность задачи здесь: https://secondboyet.com/Articles/PublishedA...umberofmon.html
          Сообщение отредактировано: MBo -
            Спасибо Огромное ,заработало как надо ,
            Memo1.Lines.Add(DateToStr(StrToDate('25.12.2024')+ 864345567/86400))
            оказалось так очень просто.


            Спасибо за оперативность и помощь. ;)
            Сообщение отредактировано: tolyan249 -
            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0467 ]   [ 16 queries used ]   [ Generated: 13.07.25, 00:36 GMT ]