Re: [PHP-DB] String datetime to DateTime

2002-06-20 Thread Glenn Holden

Thanks for the help
I'm fairly certain a fancy preg_replace could do it all at once...
 (if you sit down and write it some late night, please share...)
I didn't use the exact functions you suggested, not sure what the difference
is (yet).
Here's what I ended up with, it could easily be turned into a function:

Glenn



// get date string from between square brackets
if (preg_match('/\[.*\]/',$RawLine,$M)) {
// parse date: [19/Jun/2002:00:13:13 -0600]
$tm = substr($M[0],1,26);  //  remove brackets
$tm = preg_replace('/\x2F|\x3A/',' ',$tm); // replace '/' and ':' with ' '
$MonthStrings = array('/Jan/','/Feb/','/Mar/','/Apr/','/May/','/Jun/',
  '/Jul/','/Aug/','/Sep/','/Oct/','/Nov/','/Dec/');
$MonthNumbers = array('01','02','03','04','05','06',
  '07','08','09','10','11','12');
$tm = preg_replace($MonthStrings,$MonthNumbers,$tm); // replace Month
Strings with Month Numbers
$a = sscanf($tm,"%d %s %d %d %d %d
%s",&$day,&$mon,&$year,&$hour,&$min,&$sec,&$offset);
$tm = $year.'-'.$mon.'-'.$day.' '.$hour.':'.$min.':'.$sec; // reorganize
unix date time to mySql date time
echo "DateTime: ".$tm.""; // produces=> DateTime: 2002-06-19 0:13:13
}







<[EMAIL PROTECTED]> wrote in message
097901c2188f$a2628230$[EMAIL PROTECTED]">news:097901c2188f$a2628230$[EMAIL PROTECTED]...
> Hmm...odd.  I guess their %s (yes that was a typo) looks for a space
> as a delimiter and not the specified next one.
>
> Easiest workarounds off the cuff...
> 1)  sscanf() to get the bulk of the data out, then regex out the %s
string.
> 2)  eregi_replace() Jun with the numeric
> 3)  Dump it as numeric instead of a string month name
> 4)  eregi_replace() the /'s with spaces then sscanf() it.
>
> 'Luck
>
> -Mike
>
> - Original Message -
> From: "Glenn Holden" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Thursday, June 20, 2002 8:48 AM
> Subject: Re: [PHP-DB] String datetime to DateTime
>
>
> > Thanks for the help, Mike.
> > Trouble with sscanf...
> >
> > Incidentally I changed the $s in the format string to %s, I think that
was a
> > typo. :-)
> >
> > $str = "12/Jun/2002:01:02:26 -0600";
> > $newstr = sscanf($str,"%d/%s/%d:%d:%d:%d
> > %s",$day,$mon,$year,$hour,$min,$sec,$offset);
> >
> > The trouble I'm having is with the first %s.  It doesn't see the next
> > delimiter so it puts the remaining text up to the next space into the
$mon
> > string.
> > result:
> > $day = 12
> > $mon = Jun/2002:01:02:26
> > other variables are empty
> >
> > Looking at php help online, there was a spanish user comment that seemed
to
> > be the same problem.  And even though I can't read spanish, it looks
like
> > only a work around was suggested.
> >
> > I can work around this further but does anyone have a solution using
sscanf?
> > I'm not too clear on the acceptable syntax for the format string. Some
> > comments intimate that I could use regular expressions withing there,
but it
> > doesn't seem to work either.
> >
> > Thanks in advance for any thoughts.
> > Glenn
> >
> >
> >
> >
> > <[EMAIL PROTECTED]> wrote in message
> > news:046401c217fb$56310b00$[EMAIL PROTECTED]...
> > > DateTime formats are closer to what you have.
> > > strtotime() will give you an unsigned integer(ususally long/32bit) for
the
> > > number of seconds since the unix epoch.
> > >
> > > Automagically from what you have to mySQL DateTime...nope...not that I
can
> > think of or find.
> > > If you have the Unix timestamp in ulong format, you can use date() to
put
> > it in the correct format.
> > >
> > > Obvious workaround...
> > >
> > > MySQL retrieves and displays DATETIME values in '-MM-DD HH:MM:SS'
> > format.
> > > The supported range is '1000-01-01 00:00:00' to '-12-31 23:59:59'.
> > >
> > > $str = "12/Jun/2002:01:02:26 -0600";
> > > $newstr = sscanf($str,"%d/%s/%d:%d:%d:%d
> > $s",$day,$mon,$year,$hour,$min,$sec,$offset);
> > > $newdatestr = 
> > >
> > > I never noticed that it didn't store the GMT offset befor

Re: [PHP-DB] String datetime to DateTime

2002-06-20 Thread szii

Hmm...odd.  I guess their %s (yes that was a typo) looks for a space
as a delimiter and not the specified next one.

Easiest workarounds off the cuff...
1)  sscanf() to get the bulk of the data out, then regex out the %s string.
2)  eregi_replace() Jun with the numeric
3)  Dump it as numeric instead of a string month name
4)  eregi_replace() the /'s with spaces then sscanf() it.

'Luck

-Mike

- Original Message - 
From: "Glenn Holden" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Thursday, June 20, 2002 8:48 AM
Subject: Re: [PHP-DB] String datetime to DateTime


> Thanks for the help, Mike.
> Trouble with sscanf...
> 
> Incidentally I changed the $s in the format string to %s, I think that was a
> typo. :-)
> 
> $str = "12/Jun/2002:01:02:26 -0600";
> $newstr = sscanf($str,"%d/%s/%d:%d:%d:%d
> %s",$day,$mon,$year,$hour,$min,$sec,$offset);
> 
> The trouble I'm having is with the first %s.  It doesn't see the next
> delimiter so it puts the remaining text up to the next space into the $mon
> string.
> result:
> $day = 12
> $mon = Jun/2002:01:02:26
> other variables are empty
> 
> Looking at php help online, there was a spanish user comment that seemed to
> be the same problem.  And even though I can't read spanish, it looks like
> only a work around was suggested.
> 
> I can work around this further but does anyone have a solution using sscanf?
> I'm not too clear on the acceptable syntax for the format string. Some
> comments intimate that I could use regular expressions withing there, but it
> doesn't seem to work either.
> 
> Thanks in advance for any thoughts.
> Glenn
> 
> 
> 
> 
> <[EMAIL PROTECTED]> wrote in message
> news:046401c217fb$56310b00$[EMAIL PROTECTED]...
> > DateTime formats are closer to what you have.
> > strtotime() will give you an unsigned integer(ususally long/32bit) for the
> > number of seconds since the unix epoch.
> >
> > Automagically from what you have to mySQL DateTime...nope...not that I can
> think of or find.
> > If you have the Unix timestamp in ulong format, you can use date() to put
> it in the correct format.
> >
> > Obvious workaround...
> >
> > MySQL retrieves and displays DATETIME values in '-MM-DD HH:MM:SS'
> format.
> > The supported range is '1000-01-01 00:00:00' to '-12-31 23:59:59'.
> >
> > $str = "12/Jun/2002:01:02:26 -0600";
> > $newstr = sscanf($str,"%d/%s/%d:%d:%d:%d
> $s",$day,$mon,$year,$hour,$min,$sec,$offset);
> > $newdatestr = 
> >
> > I never noticed that it didn't store the GMT offset before.  heh.
> >
> > 'Luck
> >
> > -Mike
> >
> >
> > - Original Message -
> > From: "Glenn Holden" <[EMAIL PROTECTED]>
> > To: <[EMAIL PROTECTED]>
> > Sent: Wednesday, June 19, 2002 3:58 PM
> > Subject: [PHP-DB] String datetime to DateTime
> >
> >
> > > Hello All!
> > >
> > > I have a unix time stamp in string format like this:
> > >
> > > 12/Jun/2002:01:02:26 -0600
> > >
> > > I am trying to turn that back into a mySQL DateTime value.  I've
> > > experimented with strtotime with no luck.  I'm not really sure if that's
> > > what it's for.
> > >
> > > I can, of course, parse the string manually to build a datetime that
> MySQL
> > > will accept, but isn't there a function that handles this?
> > >
> > > How do -you- do this?
> > >
> > > Thanks!
> > > -Glenn
> > >
> > >
> > >
> > > --
> > > PHP Database Mailing List (http://www.php.net/)
> > > To unsubscribe, visit: http://www.php.net/unsub.php
> >
> 
> 
> 
> -- 
> PHP Database Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php


-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php