Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. Convert Custom String in to Date Format (mmmm dd, yyyy)

Convert Custom String in to Date Format (mmmm dd, yyyy)

Scheduled Pinned Locked Moved C / C++ / MFC
c++helptutorialquestion
17 Posts 5 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Anonymous

    Thanks for u r Reply sir. But ..still here my patterns are not static ( u assumed by mistake ) my patterns may vary due to human tendecies to speck every time different patterns for the same thing !! so.....I can't make the code based on pre-assumption like u !! Currently , I m doing the Ambigious rule making for the Text-correction.. But , I m still confused at parsing the only Numbers string ( how to differnceate with numbers for Day,Month,Year...! Can i make Regular Expression to validate the input numbers in to Day, Month, Year? Can u assist me ? Cheers, Rajan Kapadia :)

    D Offline
    D Offline
    David Crow
    wrote on last edited by
    #7

    Anonymous wrote: But , I m still confused at parsing the only Numbers string ( how to differnceate with numbers for Day,Month,Year...! How about:

    CString strDate;
    if (strDate.GetLength() == 8) // e.g., 06242005
    {
    nMonth = atoi(strDate.Left(2));
    nDay = atoi(strDate.Mid(2, 2));
    nYear = atoi(strDate.Right(4));
    }
    else if (strDate.GetLength() == 3) // e.g., 625
    {
    nMonth = atoi(strDate.Left(1));
    nDay = atoi(strDate.Mid(1, 1));
    nYear = atoi(strDate.Right(1)); // might want to add 2000
    }


    "Ideas are a dime a dozen. People who put them into action are priceless." - Unknown

    R 1 Reply Last reply
    0
    • D David Crow

      Anonymous wrote: But , I m still confused at parsing the only Numbers string ( how to differnceate with numbers for Day,Month,Year...! How about:

      CString strDate;
      if (strDate.GetLength() == 8) // e.g., 06242005
      {
      nMonth = atoi(strDate.Left(2));
      nDay = atoi(strDate.Mid(2, 2));
      nYear = atoi(strDate.Right(4));
      }
      else if (strDate.GetLength() == 3) // e.g., 625
      {
      nMonth = atoi(strDate.Left(1));
      nDay = atoi(strDate.Mid(1, 1));
      nYear = atoi(strDate.Right(1)); // might want to add 2000
      }


      "Ideas are a dime a dozen. People who put them into action are priceless." - Unknown

      R Offline
      R Offline
      Rajan Kapadia
      wrote on last edited by
      #8

      Thanks for u r reply.... I have done same thing ... just 2-day before... I have written various RE for classifying Input String in to DATE Formats based on it length. one of possible RE u can see : for 8-digit string : ((^(?10|12|0?[13578])(?3[01]|[12][0-9]|0?[1-9])(?(1[8-9]\\d{2})|([2-9]\\d{3}))$)|(^(?11|0?[469])(?30|[12][0-9]|0?[1-9])(?(1[8-9]\\d{2})|([2-9]\\d{3}))$)|(^(?0?2)(?2[0-8]|1[0-9]|0?[1-9])(?(1[8-9]\\d{2})|([2-9]\\d{3}))$)|(^(?0?2)(?29)(?[2468][048]00)$)|(^(?0?2)(?29)(?[3579][26]00)$)|(^(?0?2)(?29)(?[1][89][0][48])$)|(^(?0?2)(?29)(?[2-9][0-9][0][48])$)|(^(?0?2)(?29)(?[1][89][2468][048])$)|(^(?0?2)(?29)(?[2-9][0-9][2468][048])$)|(^(?0?2)(?29)(?[1][89][13579][26])$)|(^(?0?2)(?29)(?[2-9][0-9][13579][26])$)) This way I have solved my proble ......is it write-way to do it ??? and I want to ask? how to parse the Unkown or Ambigous pattern ....like ? "on 10th of this month" ----> so I want to find the current system date whenever I found word "this" !!!! is It?? Can I do similar for "next", "previous" ...words???? and for Day,Month,Year ?? can u assist in this similar type of problem ??? Cheers, Rajan Kapadia :)

      D 1 Reply Last reply
      0
      • R Rajan Kapadia

        Thanks for u r reply.... I have done same thing ... just 2-day before... I have written various RE for classifying Input String in to DATE Formats based on it length. one of possible RE u can see : for 8-digit string : ((^(?10|12|0?[13578])(?3[01]|[12][0-9]|0?[1-9])(?(1[8-9]\\d{2})|([2-9]\\d{3}))$)|(^(?11|0?[469])(?30|[12][0-9]|0?[1-9])(?(1[8-9]\\d{2})|([2-9]\\d{3}))$)|(^(?0?2)(?2[0-8]|1[0-9]|0?[1-9])(?(1[8-9]\\d{2})|([2-9]\\d{3}))$)|(^(?0?2)(?29)(?[2468][048]00)$)|(^(?0?2)(?29)(?[3579][26]00)$)|(^(?0?2)(?29)(?[1][89][0][48])$)|(^(?0?2)(?29)(?[2-9][0-9][0][48])$)|(^(?0?2)(?29)(?[1][89][2468][048])$)|(^(?0?2)(?29)(?[2-9][0-9][2468][048])$)|(^(?0?2)(?29)(?[1][89][13579][26])$)|(^(?0?2)(?29)(?[2-9][0-9][13579][26])$)) This way I have solved my proble ......is it write-way to do it ??? and I want to ask? how to parse the Unkown or Ambigous pattern ....like ? "on 10th of this month" ----> so I want to find the current system date whenever I found word "this" !!!! is It?? Can I do similar for "next", "previous" ...words???? and for Day,Month,Year ?? can u assist in this similar type of problem ??? Cheers, Rajan Kapadia :)

        D Offline
        D Offline
        David Crow
        wrote on last edited by
        #9

        Rajan Kapadia wrote: ...is it write-way to do it ??? My first response would be no. Since there are only six possibilities, using an if/else construct would be much simpler now and in the future if you or someone else needed to modify it. Rajan Kapadia wrote: I want to find the current system date... That is what time() is for.


        "Ideas are a dime a dozen. People who put them into action are priceless." - Unknown

        R 1 Reply Last reply
        0
        • D David Crow

          Rajan Kapadia wrote: ...is it write-way to do it ??? My first response would be no. Since there are only six possibilities, using an if/else construct would be much simpler now and in the future if you or someone else needed to modify it. Rajan Kapadia wrote: I want to find the current system date... That is what time() is for.


          "Ideas are a dime a dozen. People who put them into action are priceless." - Unknown

          R Offline
          R Offline
          Rajan Kapadia
          wrote on last edited by
          #10

          Thanks for u r reply.... David Crow Wrote:: using an if/else construct would be much simpler now ??? means what is exact ....?? means ?? --> 8-3 Length string ?? for Current SystemDate I want to Know how i can do for "next","this", "previous" , etc words ?? ??? Cheers, Rajan Kapadia :)

          D 1 Reply Last reply
          0
          • R Rajan Kapadia

            Thanks for u r reply.... David Crow Wrote:: using an if/else construct would be much simpler now ??? means what is exact ....?? means ?? --> 8-3 Length string ?? for Current SystemDate I want to Know how i can do for "next","this", "previous" , etc words ?? ??? Cheers, Rajan Kapadia :)

            D Offline
            D Offline
            David Crow
            wrote on last edited by
            #11

            Rajan Kapadia wrote: means what is exact ....?? means ?? --> 8-3 Length string ?? This is a very strange looking sentence, but I think what you are asking looks like this:

            if (3 == length)
            else if (4 == length)
            else if (5 == length)
            else if (6 == length)
            else if (7 == length)
            else if (8 == length)

            If that is not right, please ask again. Rajan Kapadia wrote: for Current SystemDate I want to Know how i can do for "next","this", "previous" , etc words ?? Like I indicated, today's date can be obtained using time(). Yesterday's date can be obtained by subtracting 86400 from that value, and tomorrow's date can be obtained by adding 86400 to that value. Make sense?


            "Ideas are a dime a dozen. People who put them into action are priceless." - Unknown

            R 1 Reply Last reply
            0
            • D David Crow

              Rajan Kapadia wrote: means what is exact ....?? means ?? --> 8-3 Length string ?? This is a very strange looking sentence, but I think what you are asking looks like this:

              if (3 == length)
              else if (4 == length)
              else if (5 == length)
              else if (6 == length)
              else if (7 == length)
              else if (8 == length)

              If that is not right, please ask again. Rajan Kapadia wrote: for Current SystemDate I want to Know how i can do for "next","this", "previous" , etc words ?? Like I indicated, today's date can be obtained using time(). Yesterday's date can be obtained by subtracting 86400 from that value, and tomorrow's date can be obtained by adding 86400 to that value. Make sense?


              "Ideas are a dime a dozen. People who put them into action are priceless." - Unknown

              R Offline
              R Offline
              Rajan Kapadia
              wrote on last edited by
              #12

              Thanks for u r Reply ..... its good to see u that we r thinking same way...!! :-O For Only Number- parsing last time I have written , that I have written various Regular-Expression (RE) to parse the given length number in case statment !!! ( one of Example of RE for stringlen(8) I have given last time ) In Last Reply I have asked a'bt how to tekal words like : "this Month" , "this year", "Next Month","Next Year", "Previous Month", "Previous Year", Etc... Currently I m thinking in a way that, I m Extracting DAY,MONTH,YEAR from the given pattern and then I search for words (this, next, Previous)tide with DAY,MONTH,YEAR word and then from Current system date Extratcion of current DAY, MONTH , YEAR......I m incrementing (+1) or decremanting (-1) by one to corresponding DAY,MONTH,YEAR variable . But,conflict for "next " phares is when we r in Decemeber and "next month " phares occurs then we increment Year and set month to January ......similar problem for "Previous" phares at January month ...? :(:(( ........ Is It I m going right way in my path ? :confused: or .....any other good Idea :cool: ?? wait for u positive reply and then start implementing this Idea..... Cheers , Rajan Kapadia :)

              D 1 Reply Last reply
              0
              • R Rajan Kapadia

                Thanks for u r Reply ..... its good to see u that we r thinking same way...!! :-O For Only Number- parsing last time I have written , that I have written various Regular-Expression (RE) to parse the given length number in case statment !!! ( one of Example of RE for stringlen(8) I have given last time ) In Last Reply I have asked a'bt how to tekal words like : "this Month" , "this year", "Next Month","Next Year", "Previous Month", "Previous Year", Etc... Currently I m thinking in a way that, I m Extracting DAY,MONTH,YEAR from the given pattern and then I search for words (this, next, Previous)tide with DAY,MONTH,YEAR word and then from Current system date Extratcion of current DAY, MONTH , YEAR......I m incrementing (+1) or decremanting (-1) by one to corresponding DAY,MONTH,YEAR variable . But,conflict for "next " phares is when we r in Decemeber and "next month " phares occurs then we increment Year and set month to January ......similar problem for "Previous" phares at January month ...? :(:(( ........ Is It I m going right way in my path ? :confused: or .....any other good Idea :cool: ?? wait for u positive reply and then start implementing this Idea..... Cheers , Rajan Kapadia :)

                D Offline
                D Offline
                David Crow
                wrote on last edited by
                #13

                Rajan Kapadia wrote: I m incrementing (+1) or decremanting (-1) by one to corresponding DAY,MONTH,YEAR variable . But,conflict for "next " phares is when we r in Decemeber and "next month " phares occurs then we increment Year and set month to January ......similar problem for "Previous" phares at January month ...? ........ Is It I m going right way in my path ? or .....any other good Idea ?? This is how I did it some eleven years ago. But since MFC has four date-related classes (I'm not sure if STL does or not), I would use them instead. There's no need to reinvent the wheel.


                "Ideas are a dime a dozen. People who put them into action are priceless." - Unknown

                R 1 Reply Last reply
                0
                • D David Crow

                  Rajan Kapadia wrote: I m incrementing (+1) or decremanting (-1) by one to corresponding DAY,MONTH,YEAR variable . But,conflict for "next " phares is when we r in Decemeber and "next month " phares occurs then we increment Year and set month to January ......similar problem for "Previous" phares at January month ...? ........ Is It I m going right way in my path ? or .....any other good Idea ?? This is how I did it some eleven years ago. But since MFC has four date-related classes (I'm not sure if STL does or not), I would use them instead. There's no need to reinvent the wheel.


                  "Ideas are a dime a dozen. People who put them into action are priceless." - Unknown

                  R Offline
                  R Offline
                  Rajan Kapadia
                  wrote on last edited by
                  #14

                  This is how I did it some eleven years ago. But since MFC has four date-related classes (I'm not sure if STL does or not), I would use them instead. There's no need to reinvent the wheel. I m not Understanding ..? can u Explain me in Deep?? As Mention preiously that how i can code perticular Pattern like this ::: " Next year 10th of January " ------> "Next Year [Day](th)* (of) [Month]" (I m parsing using this rule) and initilize the DataTime strucure with parsed Day,Month and missing term Year with Current System Year with (+/-) corresponding to words like " previous, next, this" phrases. Replacement pattern is : [Month] [Day], [CurrentSystemYear] can I stic to this type of staic parsing ?:zzz: Is it write way to do it ?:confused: Waits for u r reply!!:-D Cheers, Rajan Kapadia :)

                  D 1 Reply Last reply
                  0
                  • R Rajan Kapadia

                    This is how I did it some eleven years ago. But since MFC has four date-related classes (I'm not sure if STL does or not), I would use them instead. There's no need to reinvent the wheel. I m not Understanding ..? can u Explain me in Deep?? As Mention preiously that how i can code perticular Pattern like this ::: " Next year 10th of January " ------> "Next Year [Day](th)* (of) [Month]" (I m parsing using this rule) and initilize the DataTime strucure with parsed Day,Month and missing term Year with Current System Year with (+/-) corresponding to words like " previous, next, this" phrases. Replacement pattern is : [Month] [Day], [CurrentSystemYear] can I stic to this type of staic parsing ?:zzz: Is it write way to do it ?:confused: Waits for u r reply!!:-D Cheers, Rajan Kapadia :)

                    D Offline
                    D Offline
                    David Crow
                    wrote on last edited by
                    #15

                    Rajan Kapadia wrote: I m not Understanding ..? can u Explain me in Deep?? Instead of doing this:

                    void IncrementDay( int &nMonth, int &nDay, int &nYear )
                    {
                    nDay++;
                    if (nDay > DaysInMonth(nMonth, nYear))
                    {
                    nDay = 1;

                        nMonth++;
                        if (nMonth > 12)
                        {
                            nMonth = 1;
                            nYear++;
                        }
                    }
                    

                    }

                    Do something like this instead:

                    CTime today = CTime::GetCurrentTime();
                    CTimeSpan oneDay(1, 0, 0, 0);
                    CTime tomorrow = today + oneDay;
                    CTime yesterday = today - oneDay;

                    Simpler?


                    "Ideas are a dime a dozen. People who put them into action are priceless." - Unknown

                    R 1 Reply Last reply
                    0
                    • D David Crow

                      Rajan Kapadia wrote: I m not Understanding ..? can u Explain me in Deep?? Instead of doing this:

                      void IncrementDay( int &nMonth, int &nDay, int &nYear )
                      {
                      nDay++;
                      if (nDay > DaysInMonth(nMonth, nYear))
                      {
                      nDay = 1;

                          nMonth++;
                          if (nMonth > 12)
                          {
                              nMonth = 1;
                              nYear++;
                          }
                      }
                      

                      }

                      Do something like this instead:

                      CTime today = CTime::GetCurrentTime();
                      CTimeSpan oneDay(1, 0, 0, 0);
                      CTime tomorrow = today + oneDay;
                      CTime yesterday = today - oneDay;

                      Simpler?


                      "Ideas are a dime a dozen. People who put them into action are priceless." - Unknown

                      R Offline
                      R Offline
                      Rajan Kapadia
                      wrote on last edited by
                      #16

                      this one is simpler ....but how to takel with Month & Year ....increment ....No constructor for which give us month and year initilization.( we can't sent timeticks also ....i.e 30|31 * oneDaytime or 365|366 * onedaytime ) How i can Do increment & decremant Month & Year Now from U r Way ! U make me more confuse by giveing this idea!:laugh: also, how u think a'bt my Search-Replace Rule Idea ?:rolleyes: Wait for u r reply here !! :cool: Cheers , Rajan Kapadia :)

                      D 1 Reply Last reply
                      0
                      • R Rajan Kapadia

                        this one is simpler ....but how to takel with Month & Year ....increment ....No constructor for which give us month and year initilization.( we can't sent timeticks also ....i.e 30|31 * oneDaytime or 365|366 * onedaytime ) How i can Do increment & decremant Month & Year Now from U r Way ! U make me more confuse by giveing this idea!:laugh: also, how u think a'bt my Search-Replace Rule Idea ?:rolleyes: Wait for u r reply here !! :cool: Cheers , Rajan Kapadia :)

                        D Offline
                        D Offline
                        David Crow
                        wrote on last edited by
                        #17

                        Rajan Kapadia wrote: How i can Do increment & decremant Month... By knowing how many days are in each month. If today is July 27th, 2005 and I wanted to advance one month, use: CTime today = CTime::GetCurrentTime(); CTimeSpan oneMonth(31, 0, 0, 0); CTime nextMonth = today + oneMonth;


                        "One must learn from the bite of the fire to leave it alone." - Native American Proverb

                        1 Reply Last reply
                        0
                        Reply
                        • Reply as topic
                        Log in to reply
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes


                        • Login

                        • Don't have an account? Register

                        • Login or register to search.
                        • First post
                          Last post
                        0
                        • Categories
                        • Recent
                        • Tags
                        • Popular
                        • World
                        • Users
                        • Groups