Figuring out the remaining seconds left until a certain time with bash?

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP











up vote
0
down vote

favorite












I'm thinking about extracting the time from the 'date' command, subtracting a certain time in the future from it to get the number of seconds left until 'date' reaches that time, then to divide that number by 60 for minutes, and 60 for hours.



I want to use this as an argument for the 'shutdown' command for example.



how do I do this?










share|improve this question



























    up vote
    0
    down vote

    favorite












    I'm thinking about extracting the time from the 'date' command, subtracting a certain time in the future from it to get the number of seconds left until 'date' reaches that time, then to divide that number by 60 for minutes, and 60 for hours.



    I want to use this as an argument for the 'shutdown' command for example.



    how do I do this?










    share|improve this question

























      up vote
      0
      down vote

      favorite









      up vote
      0
      down vote

      favorite











      I'm thinking about extracting the time from the 'date' command, subtracting a certain time in the future from it to get the number of seconds left until 'date' reaches that time, then to divide that number by 60 for minutes, and 60 for hours.



      I want to use this as an argument for the 'shutdown' command for example.



      how do I do this?










      share|improve this question















      I'm thinking about extracting the time from the 'date' command, subtracting a certain time in the future from it to get the number of seconds left until 'date' reaches that time, then to divide that number by 60 for minutes, and 60 for hours.



      I want to use this as an argument for the 'shutdown' command for example.



      how do I do this?







      bash shell-script scripting






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Dec 7 at 6:26









      Rui F Ribeiro

      38.6k1479128




      38.6k1479128










      asked Dec 7 at 6:14









      dudawe

      31




      31




















          2 Answers
          2






          active

          oldest

          votes

















          up vote
          1
          down vote



          accepted










          Something like this?



          echo $(( $(date +%s -d "tomorrow 12:00") - $( date +%s ) ))
          59856





          share|improve this answer




















          • Great! Thank you, foot man
            – dudawe
            Dec 7 at 6:27










          • You're welcome ;) Feel free to up-vote or accept :D the answer.
            – tink
            Dec 7 at 6:28










          • how do I divide by 60? in the same command?
            – dudawe
            Dec 7 at 6:30










          • ` echo $(( ( $(date +%s -d "tomorrow 12:00") - $( date +%s ) ) / 60 ))`
            – tink
            Dec 7 at 6:33






          • 1




            Awesome! I tried without the additional brackets (noob)
            – dudawe
            Dec 7 at 6:36

















          up vote
          0
          down vote













          The conversion to a time string could be done directly in bash (less than 24 hours):



           $ TZ=UTC0 printf '%(%H:%M:%S)Tn' 123
          00:02:03


          The time difference could be found with simple math:



           $ now=$(printf '%(%s)T')
          $ future=$(date -d '+10 hours' '+%s')
          $ tdiff=$(( future - now ))
          $ TZ=UTC0 printf '%(%H:%M:%S)Tn' "$tdiff"
          10:00:00


          To get up to 364 days use this:



           now=$(printf '%(%s)T')
          future=$(date -d '+10 hour' '+%s')
          tdiff=$(( future - now ))
          j=$(( $(TZ=UTC0 printf '%(%j)T' "$tdiff") - 1 ))
          TZ=UTC0 printf '%s days %(%H:%M:%S)Tn' "$j" "$tdiff"

          0 days 10:00:00





          share|improve this answer






















            Your Answer








            StackExchange.ready(function()
            var channelOptions =
            tags: "".split(" "),
            id: "106"
            ;
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function()
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled)
            StackExchange.using("snippets", function()
            createEditor();
            );

            else
            createEditor();

            );

            function createEditor()
            StackExchange.prepareEditor(
            heartbeatType: 'answer',
            convertImagesToLinks: false,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: null,
            bindNavPrevention: true,
            postfix: "",
            imageUploader:
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            ,
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            );



            );













            draft saved

            draft discarded


















            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f486510%2ffiguring-out-the-remaining-seconds-left-until-a-certain-time-with-bash%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown

























            2 Answers
            2






            active

            oldest

            votes








            2 Answers
            2






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes








            up vote
            1
            down vote



            accepted










            Something like this?



            echo $(( $(date +%s -d "tomorrow 12:00") - $( date +%s ) ))
            59856





            share|improve this answer




















            • Great! Thank you, foot man
              – dudawe
              Dec 7 at 6:27










            • You're welcome ;) Feel free to up-vote or accept :D the answer.
              – tink
              Dec 7 at 6:28










            • how do I divide by 60? in the same command?
              – dudawe
              Dec 7 at 6:30










            • ` echo $(( ( $(date +%s -d "tomorrow 12:00") - $( date +%s ) ) / 60 ))`
              – tink
              Dec 7 at 6:33






            • 1




              Awesome! I tried without the additional brackets (noob)
              – dudawe
              Dec 7 at 6:36














            up vote
            1
            down vote



            accepted










            Something like this?



            echo $(( $(date +%s -d "tomorrow 12:00") - $( date +%s ) ))
            59856





            share|improve this answer




















            • Great! Thank you, foot man
              – dudawe
              Dec 7 at 6:27










            • You're welcome ;) Feel free to up-vote or accept :D the answer.
              – tink
              Dec 7 at 6:28










            • how do I divide by 60? in the same command?
              – dudawe
              Dec 7 at 6:30










            • ` echo $(( ( $(date +%s -d "tomorrow 12:00") - $( date +%s ) ) / 60 ))`
              – tink
              Dec 7 at 6:33






            • 1




              Awesome! I tried without the additional brackets (noob)
              – dudawe
              Dec 7 at 6:36












            up vote
            1
            down vote



            accepted







            up vote
            1
            down vote



            accepted






            Something like this?



            echo $(( $(date +%s -d "tomorrow 12:00") - $( date +%s ) ))
            59856





            share|improve this answer












            Something like this?



            echo $(( $(date +%s -d "tomorrow 12:00") - $( date +%s ) ))
            59856






            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered Dec 7 at 6:23









            tink

            4,11811218




            4,11811218











            • Great! Thank you, foot man
              – dudawe
              Dec 7 at 6:27










            • You're welcome ;) Feel free to up-vote or accept :D the answer.
              – tink
              Dec 7 at 6:28










            • how do I divide by 60? in the same command?
              – dudawe
              Dec 7 at 6:30










            • ` echo $(( ( $(date +%s -d "tomorrow 12:00") - $( date +%s ) ) / 60 ))`
              – tink
              Dec 7 at 6:33






            • 1




              Awesome! I tried without the additional brackets (noob)
              – dudawe
              Dec 7 at 6:36
















            • Great! Thank you, foot man
              – dudawe
              Dec 7 at 6:27










            • You're welcome ;) Feel free to up-vote or accept :D the answer.
              – tink
              Dec 7 at 6:28










            • how do I divide by 60? in the same command?
              – dudawe
              Dec 7 at 6:30










            • ` echo $(( ( $(date +%s -d "tomorrow 12:00") - $( date +%s ) ) / 60 ))`
              – tink
              Dec 7 at 6:33






            • 1




              Awesome! I tried without the additional brackets (noob)
              – dudawe
              Dec 7 at 6:36















            Great! Thank you, foot man
            – dudawe
            Dec 7 at 6:27




            Great! Thank you, foot man
            – dudawe
            Dec 7 at 6:27












            You're welcome ;) Feel free to up-vote or accept :D the answer.
            – tink
            Dec 7 at 6:28




            You're welcome ;) Feel free to up-vote or accept :D the answer.
            – tink
            Dec 7 at 6:28












            how do I divide by 60? in the same command?
            – dudawe
            Dec 7 at 6:30




            how do I divide by 60? in the same command?
            – dudawe
            Dec 7 at 6:30












            ` echo $(( ( $(date +%s -d "tomorrow 12:00") - $( date +%s ) ) / 60 ))`
            – tink
            Dec 7 at 6:33




            ` echo $(( ( $(date +%s -d "tomorrow 12:00") - $( date +%s ) ) / 60 ))`
            – tink
            Dec 7 at 6:33




            1




            1




            Awesome! I tried without the additional brackets (noob)
            – dudawe
            Dec 7 at 6:36




            Awesome! I tried without the additional brackets (noob)
            – dudawe
            Dec 7 at 6:36












            up vote
            0
            down vote













            The conversion to a time string could be done directly in bash (less than 24 hours):



             $ TZ=UTC0 printf '%(%H:%M:%S)Tn' 123
            00:02:03


            The time difference could be found with simple math:



             $ now=$(printf '%(%s)T')
            $ future=$(date -d '+10 hours' '+%s')
            $ tdiff=$(( future - now ))
            $ TZ=UTC0 printf '%(%H:%M:%S)Tn' "$tdiff"
            10:00:00


            To get up to 364 days use this:



             now=$(printf '%(%s)T')
            future=$(date -d '+10 hour' '+%s')
            tdiff=$(( future - now ))
            j=$(( $(TZ=UTC0 printf '%(%j)T' "$tdiff") - 1 ))
            TZ=UTC0 printf '%s days %(%H:%M:%S)Tn' "$j" "$tdiff"

            0 days 10:00:00





            share|improve this answer


























              up vote
              0
              down vote













              The conversion to a time string could be done directly in bash (less than 24 hours):



               $ TZ=UTC0 printf '%(%H:%M:%S)Tn' 123
              00:02:03


              The time difference could be found with simple math:



               $ now=$(printf '%(%s)T')
              $ future=$(date -d '+10 hours' '+%s')
              $ tdiff=$(( future - now ))
              $ TZ=UTC0 printf '%(%H:%M:%S)Tn' "$tdiff"
              10:00:00


              To get up to 364 days use this:



               now=$(printf '%(%s)T')
              future=$(date -d '+10 hour' '+%s')
              tdiff=$(( future - now ))
              j=$(( $(TZ=UTC0 printf '%(%j)T' "$tdiff") - 1 ))
              TZ=UTC0 printf '%s days %(%H:%M:%S)Tn' "$j" "$tdiff"

              0 days 10:00:00





              share|improve this answer
























                up vote
                0
                down vote










                up vote
                0
                down vote









                The conversion to a time string could be done directly in bash (less than 24 hours):



                 $ TZ=UTC0 printf '%(%H:%M:%S)Tn' 123
                00:02:03


                The time difference could be found with simple math:



                 $ now=$(printf '%(%s)T')
                $ future=$(date -d '+10 hours' '+%s')
                $ tdiff=$(( future - now ))
                $ TZ=UTC0 printf '%(%H:%M:%S)Tn' "$tdiff"
                10:00:00


                To get up to 364 days use this:



                 now=$(printf '%(%s)T')
                future=$(date -d '+10 hour' '+%s')
                tdiff=$(( future - now ))
                j=$(( $(TZ=UTC0 printf '%(%j)T' "$tdiff") - 1 ))
                TZ=UTC0 printf '%s days %(%H:%M:%S)Tn' "$j" "$tdiff"

                0 days 10:00:00





                share|improve this answer














                The conversion to a time string could be done directly in bash (less than 24 hours):



                 $ TZ=UTC0 printf '%(%H:%M:%S)Tn' 123
                00:02:03


                The time difference could be found with simple math:



                 $ now=$(printf '%(%s)T')
                $ future=$(date -d '+10 hours' '+%s')
                $ tdiff=$(( future - now ))
                $ TZ=UTC0 printf '%(%H:%M:%S)Tn' "$tdiff"
                10:00:00


                To get up to 364 days use this:



                 now=$(printf '%(%s)T')
                future=$(date -d '+10 hour' '+%s')
                tdiff=$(( future - now ))
                j=$(( $(TZ=UTC0 printf '%(%j)T' "$tdiff") - 1 ))
                TZ=UTC0 printf '%s days %(%H:%M:%S)Tn' "$j" "$tdiff"

                0 days 10:00:00






                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited Dec 7 at 8:36

























                answered Dec 7 at 8:15









                Isaac

                11k11648




                11k11648



























                    draft saved

                    draft discarded
















































                    Thanks for contributing an answer to Unix & Linux Stack Exchange!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid


                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.

                    To learn more, see our tips on writing great answers.





                    Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                    Please pay close attention to the following guidance:


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid


                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.

                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function ()
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f486510%2ffiguring-out-the-remaining-seconds-left-until-a-certain-time-with-bash%23new-answer', 'question_page');

                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown






                    Popular posts from this blog

                    How to check contact read email or not when send email to Individual?

                    Bahrain

                    Postfix configuration issue with fips on centos 7; mailgun relay