Loading ...
Sorry, an error occurred while loading the content.
 

Date/time increment

Expand Messages
  • mprmkk
    Hi, I have a timestamp field of the format Feb 28 23:55:09 . I am trying to increment the time using Perl by say 10 mins and get the result as Mar 01
    Message 1 of 5 , Feb 7, 2005
      Hi,

      I have a timestamp field of the format
      "Feb 28 23:55:09". I am trying to increment the time
      using Perl by say 10 mins and get the result as "Mar
      01 00:05:09". Below is what I used but Add_Delta_DHMS
      gives me an invalid date error.
      Please note that the input time format is exactly as
      mentioned above. I also DO NOT want to use Date::Manip.

      Any help in solving this greatly appreciated.

      use Date::Calc qw(Add_Delta_DHMS);
      use Date::Format;
      use Date::Parse;
      $dt = 'Feb 28 23:55:09';
      $Dd = 0;
      $Dh = 0;
      $Dm = 10;
      $Ds = 0;
      my ($ss,$mm,$hh,$day,$month) = strptime($dt);
      $year = '2005';
      ($year,$month,$day, $hh,$mm,$ss) =
      Add_Delta_DHMS($year,$month,$day, $hh,$mm,$ss,
      $Dd,$Dh,$Dm,$Ds);
      @arr = ($ss, $mm, $hh, $day, $month);
      print strftime("%b %d %H:%M:%S", @arr);
    • Paul Archer
      I tried your code, and instead of getting an invalid date error, I got: Feb 29 00:05:09, which is worse, really. I thought that maybe it was because you
      Message 2 of 5 , Feb 7, 2005
        I tried your code, and instead of getting an invalid date error, I got:
        Feb 29 00:05:09, which is worse, really.
        I thought that maybe it was because you weren't using Add_Delta_YMDHMS, but
        changing to that got the same results.

        Ok, here's the problem: it looks like Date::Calc thinks the months are
        numbered 1-12, while everything else (in Perl, anyway) assumes they are
        numbered 0-11.
        Try adding 1 to your month before feeding it to Date::Calc, and then
        subtracting 1 after you're done.


        4:39pm, mprmkk wrote:

        >
        >
        > Hi,
        >
        > I have a timestamp field of the format
        > "Feb 28 23:55:09". I am trying to increment the time
        > using Perl by say 10 mins and get the result as "Mar
        > 01 00:05:09". Below is what I used but Add_Delta_DHMS
        > gives me an invalid date error.
        > Please note that the input time format is exactly as
        > mentioned above. I also DO NOT want to use Date::Manip.
        >
        > Any help in solving this greatly appreciated.
        >
        > use Date::Calc qw(Add_Delta_DHMS);
        > use Date::Format;
        > use Date::Parse;
        > $dt = 'Feb 28 23:55:09';
        > $Dd = 0;
        > $Dh = 0;
        > $Dm = 10;
        > $Ds = 0;
        > my ($ss,$mm,$hh,$day,$month) = strptime($dt);
        > $year = '2005';
        > ($year,$month,$day, $hh,$mm,$ss) =
        > Add_Delta_DHMS($year,$month,$day, $hh,$mm,$ss,
        > $Dd,$Dh,$Dm,$Ds);
        > @arr = ($ss, $mm, $hh, $day, $month);
        > print strftime("%b %d %H:%M:%S", @arr);
        >
        >
        >
        >
        >
        >
        > Unsubscribing info is here: http://help.yahoo.com/help/us/groups/groups-32.html
        > Yahoo! Groups Links
        >
        >
        >
        >
        >
        >
        >

        ----------------------------------------------
        "We Americans, we're a simple people...
        but piss us off, and we'll bomb your cities."
        --------------Robin Williams------------------
      • mprmkk
        I already tried adding 1 to month and then using that in Add_Delta but the result comes up as Apr 01. And the invalid date error comes up when I use a date
        Message 3 of 5 , Feb 7, 2005
          I already tried adding 1 to month and then using that in Add_Delta
          but the result comes up as Apr 01. And the invalid date error comes
          up when I use a date like Jan 28.
          I realized that the error is because Add_Delta probably uses 1-12 and
          like I've said above, incrementing month by 1 gives even weirder
          results.

          --- In perl-beginner@yahoogroups.com, Paul Archer <tigger@i...> wrote:
          > I tried your code, and instead of getting an invalid date error, I
          got:
          > Feb 29 00:05:09, which is worse, really.
          > I thought that maybe it was because you weren't using
          Add_Delta_YMDHMS, but
          > changing to that got the same results.
          >
          > Ok, here's the problem: it looks like Date::Calc thinks the months
          are
          > numbered 1-12, while everything else (in Perl, anyway) assumes they
          are
          > numbered 0-11.
          > Try adding 1 to your month before feeding it to Date::Calc, and
          then
          > subtracting 1 after you're done.
          >
          >
          > 4:39pm, mprmkk wrote:
          >
          > >
          > >
          > > Hi,
          > >
          > > I have a timestamp field of the format
          > > "Feb 28 23:55:09". I am trying to increment the time
          > > using Perl by say 10 mins and get the result as "Mar
          > > 01 00:05:09". Below is what I used but Add_Delta_DHMS
          > > gives me an invalid date error.
          > > Please note that the input time format is exactly as
          > > mentioned above. I also DO NOT want to use Date::Manip.
          > >
          > > Any help in solving this greatly appreciated.
          > >
          > > use Date::Calc qw(Add_Delta_DHMS);
          > > use Date::Format;
          > > use Date::Parse;
          > > $dt = 'Feb 28 23:55:09';
          > > $Dd = 0;
          > > $Dh = 0;
          > > $Dm = 10;
          > > $Ds = 0;
          > > my ($ss,$mm,$hh,$day,$month) = strptime($dt);
          > > $year = '2005';
          > > ($year,$month,$day, $hh,$mm,$ss) =
          > > Add_Delta_DHMS($year,$month,$day, $hh,$mm,$ss,
          > > $Dd,$Dh,$Dm,$Ds);
          > > @arr = ($ss, $mm, $hh, $day, $month);
          > > print strftime("%b %d %H:%M:%S", @arr);
          > >
          > >
          > >
          > >
          > >
          > >
          > > Unsubscribing info is here:
          http://help.yahoo.com/help/us/groups/groups-32.html
          > > Yahoo! Groups Links
          > >
          > >
          > >
          > >
          > >
          > >
          > >
          >
          > ----------------------------------------------
          > "We Americans, we're a simple people...
          > but piss us off, and we'll bomb your cities."
          > --------------Robin Williams------------------
        • Mike Dillinger
          ... For me personally, I always convert the date to epoch seconds, do my math, and convert it back. I have also seen weirdness with the Date::Calc
          Message 4 of 5 , Feb 7, 2005
            Message from "mprmkk" on 02/07/05 10:38 AM PT quoted:
            >
            > I already tried adding 1 to month and then using that in Add_Delta
            > but the result comes up as Apr 01. And the invalid date error comes
            > up when I use a date like Jan 28.
            > I realized that the error is because Add_Delta probably uses 1-12 and
            > like I've said above, incrementing month by 1 gives even weirder
            > results.

            For me personally, I always convert the date to epoch seconds, do my
            math, and convert it back. I have also seen weirdness with the
            Date::Calc methodology. I know the conversion to epoch seconds is an
            extra step, but the reliability trade-off is worth it.

            -MikeD
          • Paul Archer
            ... Sure you re going to get weird results--unless you decrement by one afterwards. But I m with Mike Dillinger: convert to epoch seconds and do your math on
            Message 5 of 5 , Feb 7, 2005
              > I already tried adding 1 to month and then using that in Add_Delta
              > but the result comes up as Apr 01. And the invalid date error comes
              > up when I use a date like Jan 28.
              > I realized that the error is because Add_Delta probably uses 1-12 and
              > like I've said above, incrementing month by 1 gives even weirder
              > results.
              >
              Sure you're going to get weird results--unless you decrement by one
              afterwards.
              But I'm with Mike Dillinger: convert to epoch seconds and do your math on
              that. There's less chance of a screwup. Keep in mind that that won't work if
              you're adding months, though.



              > --- In perl-beginner@yahoogroups.com, Paul Archer <tigger@i...> wrote:
              >> I tried your code, and instead of getting an invalid date error, I
              > got:
              >> Feb 29 00:05:09, which is worse, really.
              >> I thought that maybe it was because you weren't using
              > Add_Delta_YMDHMS, but
              >> changing to that got the same results.
              >>
              >> Ok, here's the problem: it looks like Date::Calc thinks the months
              > are
              >> numbered 1-12, while everything else (in Perl, anyway) assumes they
              > are
              >> numbered 0-11.
              >> Try adding 1 to your month before feeding it to Date::Calc, and
              > then
              >> subtracting 1 after you're done.
              >>
              >>
              >> 4:39pm, mprmkk wrote:
              >>
              >>>
              >>>
              >>> Hi,
              >>>
              >>> I have a timestamp field of the format
              >>> "Feb 28 23:55:09". I am trying to increment the time
              >>> using Perl by say 10 mins and get the result as "Mar
              >>> 01 00:05:09". Below is what I used but Add_Delta_DHMS
              >>> gives me an invalid date error.
              >>> Please note that the input time format is exactly as
              >>> mentioned above. I also DO NOT want to use Date::Manip.
              >>>
              >>> Any help in solving this greatly appreciated.
              >>>
              >>> use Date::Calc qw(Add_Delta_DHMS);
              >>> use Date::Format;
              >>> use Date::Parse;
              >>> $dt = 'Feb 28 23:55:09';
              >>> $Dd = 0;
              >>> $Dh = 0;
              >>> $Dm = 10;
              >>> $Ds = 0;
              >>> my ($ss,$mm,$hh,$day,$month) = strptime($dt);
              >>> $year = '2005';
              >>> ($year,$month,$day, $hh,$mm,$ss) =
              >>> Add_Delta_DHMS($year,$month,$day, $hh,$mm,$ss,
              >>> $Dd,$Dh,$Dm,$Ds);
              >>> @arr = ($ss, $mm, $hh, $day, $month);
              >>> print strftime("%b %d %H:%M:%S", @arr);
              >>>
              >>>
              >>>
              >>>
              >>>
              >>>
              >>> Unsubscribing info is here:
              > http://help.yahoo.com/help/us/groups/groups-32.html
              >>> Yahoo! Groups Links
              >>>
              >>>
              >>>
              >>>
              >>>
              >>>
              >>>
              >>
              >> ----------------------------------------------
              >> "We Americans, we're a simple people...
              >> but piss us off, and we'll bomb your cities."
              >> --------------Robin Williams------------------
              >
              >
              >
              >
              >
              > Unsubscribing info is here: http://help.yahoo.com/help/us/groups/groups-32.html
              > Yahoo! Groups Links
              >
              >
              >
              >
              >
              >
              >

              ----------------------------------------------------------------
              As to Jesus of Nazareth...I think the system of Morals and his
              Religion, as he left them to us, the best the World ever saw
              or is likely to see; but I apprehend it has received various
              corrupting Changes, and I have, with most of the present
              Dissenters in England, some doubts as to his divinity.
              --------------------Benjamin Franklin---------------------------
            Your message has been successfully submitted and would be delivered to recipients shortly.