Checking for invalid date in bash script

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





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








1















I am checking for a valid date scrpt.bash test 2019-05-03



date -d $2 2>: 1>:; c=$?


If $c is 1 then the date is invalid. If I enter 2019-05-03 I will get a 0 which is correct. If i enter 2019-05-03u I get a 0 which is incorrect. I can enter 2019-05-03uu then it throws an error. How can I just check if the date is valid.










share|improve this question

















  • 1





    Is the date always provided in this format? 2019-05-03

    – Luciano Andress Martini
    Mar 12 at 14:24











  • Have you try date -d $2 && c=$?

    – Romeo Ninov
    Mar 12 at 14:24











  • Romeo as he says date is returning sucess (0), even if the date contain a additional character at end. So && will make no difference as it will check the command return too to make a decision.

    – Luciano Andress Martini
    Mar 12 at 14:25







  • 1





    date is valid against what criteria? Against what your date -d supports?

    – Stéphane Chazelas
    Mar 12 at 14:32

















1















I am checking for a valid date scrpt.bash test 2019-05-03



date -d $2 2>: 1>:; c=$?


If $c is 1 then the date is invalid. If I enter 2019-05-03 I will get a 0 which is correct. If i enter 2019-05-03u I get a 0 which is incorrect. I can enter 2019-05-03uu then it throws an error. How can I just check if the date is valid.










share|improve this question

















  • 1





    Is the date always provided in this format? 2019-05-03

    – Luciano Andress Martini
    Mar 12 at 14:24











  • Have you try date -d $2 && c=$?

    – Romeo Ninov
    Mar 12 at 14:24











  • Romeo as he says date is returning sucess (0), even if the date contain a additional character at end. So && will make no difference as it will check the command return too to make a decision.

    – Luciano Andress Martini
    Mar 12 at 14:25







  • 1





    date is valid against what criteria? Against what your date -d supports?

    – Stéphane Chazelas
    Mar 12 at 14:32













1












1








1


0






I am checking for a valid date scrpt.bash test 2019-05-03



date -d $2 2>: 1>:; c=$?


If $c is 1 then the date is invalid. If I enter 2019-05-03 I will get a 0 which is correct. If i enter 2019-05-03u I get a 0 which is incorrect. I can enter 2019-05-03uu then it throws an error. How can I just check if the date is valid.










share|improve this question














I am checking for a valid date scrpt.bash test 2019-05-03



date -d $2 2>: 1>:; c=$?


If $c is 1 then the date is invalid. If I enter 2019-05-03 I will get a 0 which is correct. If i enter 2019-05-03u I get a 0 which is incorrect. I can enter 2019-05-03uu then it throws an error. How can I just check if the date is valid.







bash date error-handling






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Mar 12 at 14:06









user3525290user3525290

1224




1224







  • 1





    Is the date always provided in this format? 2019-05-03

    – Luciano Andress Martini
    Mar 12 at 14:24











  • Have you try date -d $2 && c=$?

    – Romeo Ninov
    Mar 12 at 14:24











  • Romeo as he says date is returning sucess (0), even if the date contain a additional character at end. So && will make no difference as it will check the command return too to make a decision.

    – Luciano Andress Martini
    Mar 12 at 14:25







  • 1





    date is valid against what criteria? Against what your date -d supports?

    – Stéphane Chazelas
    Mar 12 at 14:32












  • 1





    Is the date always provided in this format? 2019-05-03

    – Luciano Andress Martini
    Mar 12 at 14:24











  • Have you try date -d $2 && c=$?

    – Romeo Ninov
    Mar 12 at 14:24











  • Romeo as he says date is returning sucess (0), even if the date contain a additional character at end. So && will make no difference as it will check the command return too to make a decision.

    – Luciano Andress Martini
    Mar 12 at 14:25







  • 1





    date is valid against what criteria? Against what your date -d supports?

    – Stéphane Chazelas
    Mar 12 at 14:32







1




1





Is the date always provided in this format? 2019-05-03

– Luciano Andress Martini
Mar 12 at 14:24





Is the date always provided in this format? 2019-05-03

– Luciano Andress Martini
Mar 12 at 14:24













Have you try date -d $2 && c=$?

– Romeo Ninov
Mar 12 at 14:24





Have you try date -d $2 && c=$?

– Romeo Ninov
Mar 12 at 14:24













Romeo as he says date is returning sucess (0), even if the date contain a additional character at end. So && will make no difference as it will check the command return too to make a decision.

– Luciano Andress Martini
Mar 12 at 14:25






Romeo as he says date is returning sucess (0), even if the date contain a additional character at end. So && will make no difference as it will check the command return too to make a decision.

– Luciano Andress Martini
Mar 12 at 14:25





1




1





date is valid against what criteria? Against what your date -d supports?

– Stéphane Chazelas
Mar 12 at 14:32





date is valid against what criteria? Against what your date -d supports?

– Stéphane Chazelas
Mar 12 at 14:32










1 Answer
1






active

oldest

votes


















2














If date is always provided in this format: '2019-05-03', this will probably work always:



#!/bin/sh -

if [ -n "$2" ] && [ "$(date -d "$2" +%Y-%m-%d 2> /dev/null)" = "$2" ]; then
echo 'This date is valid'
fi





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',
    autoActivateHeartbeat: false,
    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%2f505886%2fchecking-for-invalid-date-in-bash-script%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    2














    If date is always provided in this format: '2019-05-03', this will probably work always:



    #!/bin/sh -

    if [ -n "$2" ] && [ "$(date -d "$2" +%Y-%m-%d 2> /dev/null)" = "$2" ]; then
    echo 'This date is valid'
    fi





    share|improve this answer





























      2














      If date is always provided in this format: '2019-05-03', this will probably work always:



      #!/bin/sh -

      if [ -n "$2" ] && [ "$(date -d "$2" +%Y-%m-%d 2> /dev/null)" = "$2" ]; then
      echo 'This date is valid'
      fi





      share|improve this answer



























        2












        2








        2







        If date is always provided in this format: '2019-05-03', this will probably work always:



        #!/bin/sh -

        if [ -n "$2" ] && [ "$(date -d "$2" +%Y-%m-%d 2> /dev/null)" = "$2" ]; then
        echo 'This date is valid'
        fi





        share|improve this answer















        If date is always provided in this format: '2019-05-03', this will probably work always:



        #!/bin/sh -

        if [ -n "$2" ] && [ "$(date -d "$2" +%Y-%m-%d 2> /dev/null)" = "$2" ]; then
        echo 'This date is valid'
        fi






        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited Mar 12 at 14:36









        Stéphane Chazelas

        314k57594952




        314k57594952










        answered Mar 12 at 14:31









        Luciano Andress MartiniLuciano Andress Martini

        4,1901237




        4,1901237



























            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.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f505886%2fchecking-for-invalid-date-in-bash-script%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?

            Displaying single band from multi-band raster using QGIS

            How many registers does an x86_64 CPU actually have?