How to convert a DateTime variable in awk to seconds?












1















I have a variable in which stores the DateTime in awk



test=$(f["DateTime"])
print "Printing Test variable:",test


Output:



 Printing Test variable:,"2018-12-18 18:36:55"


I want to convert the value in test to seconds



Could anybody tell me how to do that in awk



Using mktime() is giving -1 as output



    print mktime(gensub(/[ :-]/," ","g",test))


My Input data (CSV File)is like below



DateTime,Dealer,Some Value,State,CallEndTime,Some Value,TotalDuration,,..

"2019-01-07 11:35:42","Car","fab","foo",,"bar","100","boo",..


I got the DateTime value from this,










share|improve this question





























    1















    I have a variable in which stores the DateTime in awk



    test=$(f["DateTime"])
    print "Printing Test variable:",test


    Output:



     Printing Test variable:,"2018-12-18 18:36:55"


    I want to convert the value in test to seconds



    Could anybody tell me how to do that in awk



    Using mktime() is giving -1 as output



        print mktime(gensub(/[ :-]/," ","g",test))


    My Input data (CSV File)is like below



    DateTime,Dealer,Some Value,State,CallEndTime,Some Value,TotalDuration,,..

    "2019-01-07 11:35:42","Car","fab","foo",,"bar","100","boo",..


    I got the DateTime value from this,










    share|improve this question



























      1












      1








      1








      I have a variable in which stores the DateTime in awk



      test=$(f["DateTime"])
      print "Printing Test variable:",test


      Output:



       Printing Test variable:,"2018-12-18 18:36:55"


      I want to convert the value in test to seconds



      Could anybody tell me how to do that in awk



      Using mktime() is giving -1 as output



          print mktime(gensub(/[ :-]/," ","g",test))


      My Input data (CSV File)is like below



      DateTime,Dealer,Some Value,State,CallEndTime,Some Value,TotalDuration,,..

      "2019-01-07 11:35:42","Car","fab","foo",,"bar","100","boo",..


      I got the DateTime value from this,










      share|improve this question
















      I have a variable in which stores the DateTime in awk



      test=$(f["DateTime"])
      print "Printing Test variable:",test


      Output:



       Printing Test variable:,"2018-12-18 18:36:55"


      I want to convert the value in test to seconds



      Could anybody tell me how to do that in awk



      Using mktime() is giving -1 as output



          print mktime(gensub(/[ :-]/," ","g",test))


      My Input data (CSV File)is like below



      DateTime,Dealer,Some Value,State,CallEndTime,Some Value,TotalDuration,,..

      "2019-01-07 11:35:42","Car","fab","foo",,"bar","100","boo",..


      I got the DateTime value from this,







      command-line awk






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Jan 23 at 4:04







      mittu

















      asked Jan 23 at 3:23









      mittumittu

      83




      83






















          1 Answer
          1






          active

          oldest

          votes


















          1














          If you have GNU awk (gawk) you can use its mktime function - however the input must be a space-separated datespec of the form "YYYY MM DD HH MM SS [DST]". The date fields in your variable are in the right order, but you will need to replace the delimiters with spaces:



          $ gawk -v test="2018-12-18 18:36:55" 'BEGIN{print mktime(gensub(/[ :-]/," ","g",test))}'
          1545176215


          See for example Time Functions in the GNU Awk User's Guide





          If your string is enclosed in double quotes, you will need to remove those as well:



          $ gawk -v test='"2018-12-18 18:36:55"' 'BEGIN{print mktime(gensub(/[ ":-]/," ","g",test))}'
          1545176215





          share|improve this answer


























          • I tried this,but its giving me -1 as O/P, Please check the edited question

            – mittu
            Jan 23 at 4:05











          • @mittu please see update

            – steeldriver
            Jan 23 at 4:09











          Your Answer








          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "89"
          };
          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: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          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%2faskubuntu.com%2fquestions%2f1112120%2fhow-to-convert-a-datetime-variable-in-awk-to-seconds%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









          1














          If you have GNU awk (gawk) you can use its mktime function - however the input must be a space-separated datespec of the form "YYYY MM DD HH MM SS [DST]". The date fields in your variable are in the right order, but you will need to replace the delimiters with spaces:



          $ gawk -v test="2018-12-18 18:36:55" 'BEGIN{print mktime(gensub(/[ :-]/," ","g",test))}'
          1545176215


          See for example Time Functions in the GNU Awk User's Guide





          If your string is enclosed in double quotes, you will need to remove those as well:



          $ gawk -v test='"2018-12-18 18:36:55"' 'BEGIN{print mktime(gensub(/[ ":-]/," ","g",test))}'
          1545176215





          share|improve this answer


























          • I tried this,but its giving me -1 as O/P, Please check the edited question

            – mittu
            Jan 23 at 4:05











          • @mittu please see update

            – steeldriver
            Jan 23 at 4:09
















          1














          If you have GNU awk (gawk) you can use its mktime function - however the input must be a space-separated datespec of the form "YYYY MM DD HH MM SS [DST]". The date fields in your variable are in the right order, but you will need to replace the delimiters with spaces:



          $ gawk -v test="2018-12-18 18:36:55" 'BEGIN{print mktime(gensub(/[ :-]/," ","g",test))}'
          1545176215


          See for example Time Functions in the GNU Awk User's Guide





          If your string is enclosed in double quotes, you will need to remove those as well:



          $ gawk -v test='"2018-12-18 18:36:55"' 'BEGIN{print mktime(gensub(/[ ":-]/," ","g",test))}'
          1545176215





          share|improve this answer


























          • I tried this,but its giving me -1 as O/P, Please check the edited question

            – mittu
            Jan 23 at 4:05











          • @mittu please see update

            – steeldriver
            Jan 23 at 4:09














          1












          1








          1







          If you have GNU awk (gawk) you can use its mktime function - however the input must be a space-separated datespec of the form "YYYY MM DD HH MM SS [DST]". The date fields in your variable are in the right order, but you will need to replace the delimiters with spaces:



          $ gawk -v test="2018-12-18 18:36:55" 'BEGIN{print mktime(gensub(/[ :-]/," ","g",test))}'
          1545176215


          See for example Time Functions in the GNU Awk User's Guide





          If your string is enclosed in double quotes, you will need to remove those as well:



          $ gawk -v test='"2018-12-18 18:36:55"' 'BEGIN{print mktime(gensub(/[ ":-]/," ","g",test))}'
          1545176215





          share|improve this answer















          If you have GNU awk (gawk) you can use its mktime function - however the input must be a space-separated datespec of the form "YYYY MM DD HH MM SS [DST]". The date fields in your variable are in the right order, but you will need to replace the delimiters with spaces:



          $ gawk -v test="2018-12-18 18:36:55" 'BEGIN{print mktime(gensub(/[ :-]/," ","g",test))}'
          1545176215


          See for example Time Functions in the GNU Awk User's Guide





          If your string is enclosed in double quotes, you will need to remove those as well:



          $ gawk -v test='"2018-12-18 18:36:55"' 'BEGIN{print mktime(gensub(/[ ":-]/," ","g",test))}'
          1545176215






          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Jan 23 at 4:09

























          answered Jan 23 at 3:45









          steeldriversteeldriver

          68.8k11113184




          68.8k11113184













          • I tried this,but its giving me -1 as O/P, Please check the edited question

            – mittu
            Jan 23 at 4:05











          • @mittu please see update

            – steeldriver
            Jan 23 at 4:09



















          • I tried this,but its giving me -1 as O/P, Please check the edited question

            – mittu
            Jan 23 at 4:05











          • @mittu please see update

            – steeldriver
            Jan 23 at 4:09

















          I tried this,but its giving me -1 as O/P, Please check the edited question

          – mittu
          Jan 23 at 4:05





          I tried this,but its giving me -1 as O/P, Please check the edited question

          – mittu
          Jan 23 at 4:05













          @mittu please see update

          – steeldriver
          Jan 23 at 4:09





          @mittu please see update

          – steeldriver
          Jan 23 at 4:09


















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Ask Ubuntu!


          • 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%2faskubuntu.com%2fquestions%2f1112120%2fhow-to-convert-a-datetime-variable-in-awk-to-seconds%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

          Biblatex bibliography style without URLs when DOI exists (in Overleaf with Zotero bibliography)

          ComboBox Display Member on multiple fields

          Is it possible to collect Nectar points via Trainline?