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."<BR>"; // 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 'YYYY-MM-DD HH:MM:SS' > > format. > > > The supported range is '1000-01-01 00:00:00' to '9999-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 = <rebuild it here> > > > > > > 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