PHP - Replacing output format of date...

Posted by: Gremelin

PHP - Replacing output format of date... - 09/04/05 02:42 PM

Ok, I'm trying to code up an RSS2.0 output of the news that's displayed on the main page... I've got about 99% of everything done however I've run into a snag...

The UBB stores dates (presantly) as (08-31-2005 05:54 AM):
Code:
Date("m-d-Y h:i A");
However RSS2.0 specs declare that the date MUST be (Sun, 04 Sep 2005 07:42:38 PDT):
Code:
Date("D, d M Y H:i:s T");
Now, to tinker with the code to change how the date is displayed will effectively screw things up all over the site, so my PHP file will have to change the date format based on the date in the string "$postdate"...

Any ideas?
Posted by: §intå×

Re: PHP - Replacing output format of date... - 09/06/05 08:21 AM

Why not just create a second variable in UBB?

when the call for $postdate("m-d-Y h:i A"); is made
doe a second call to $postdate2("D, d M Y H:i:s T"); Then pass postdate2 to PHP RSS2.0 script.
Posted by: Gremelin

Re: PHP - Replacing output format of date... - 09/06/05 10:20 PM

Becuase I have no control over the output of the date; I was simply posting what format the date was in...

The $postdate is calling the date from the ubb thread files which are stored in plain text.
Posted by: §intå×

Re: PHP - Replacing output format of date... - 09/07/05 05:15 PM

There should still be some perl code that create the flat file. But if not. Maybe mktime()

Thing is you would have to split(); it several ways to break out the variables from the first timestamp

http://us2.php.net/manual/en/function.split.php

$this_date = "$postdate";// date will be in this format m-d-Y h:i A

Code:
$split1 = split("-:",$postdate);

/*this leaves us with this array
array(
   [0] => "M"
   [1] => "d"
   [2] => "Y "
   [3] => "h"
   [4] => "i A"
);
*/ 
so we could then trim $split1[2] and split $split1[4].
Code:
$split2 = trim($split[2]);
$split3 = split(" ", $split[4]);

//now this is a pain in the ass...
/*
$split[0] is month
$split[1] is day
$split2 is year
$split1[3] is hour
$split3[0] is minutes
$split3[1] Ante meridiem and Post meridiem
*/
Now where you get s and T Seconds, with leading zeros and Timezone setting of the machine....

I guess you could default seconds to 00, and timezone is eazy enough.

Now then, mktime()... I hate time by the way...

Real quick summary of mktime
Code:
mktime(hour, minute, second, month, day, year);
Now what we can do is this
Code:
$My_new_date = date("D, d M Y H:i:s T", mktime($split1[3], $split3[0], 00, $split[0], $split[1], $split2));
That should work, I am not 100% on syntax I am sure, you might have to play with quotes around the array values.
Posted by: §intå×

Re: PHP - Replacing output format of date... - 09/08/05 06:10 PM

so did this help?
Posted by: Gremelin

Re: PHP - Replacing output format of date... - 09/08/05 07:17 PM

I got a lil ill last night so i didn't get a chance to apply it; i'll work on trying it tonight if i feel better.
Posted by: Gremelin

Re: PHP - Replacing output format of date... - 09/14/05 06:11 AM

It's reading the date off still; I'm getting:
Wed, 31 Dec 1969 15:59:59 PST

Instead of:
Tue, 30 Aug 2005 09:54:00 PST
Posted by: §intå×

Re: PHP - Replacing output format of date... - 09/14/05 07:48 PM

hmmmm... So you are getting some corupt unix epoch...

let me think on it, email me the code you have.

Segments please, no big ass page of code.

Oh did I mention I hate time coding? This shit is soooo tedious and difficult.
Posted by: Gremelin

Re: PHP - Replacing output format of date... - 09/15/05 01:17 AM

to get the relay (do tests) you'd have to have shell access; do you still have it?
Posted by: Gremelin

Re: PHP - Replacing output format of date... - 09/15/05 02:05 AM

ok, literally, the incoming date/time are basically $postdate and $posttime when parsed from the forum; these two variables will come as:

$postdate = 08-31-2005
$posttime = 05:54 AM
Posted by: Ron M

Re: PHP - Replacing output format of date... - 09/16/05 02:14 PM

Hey Gizzy, I might be able to scrounge some debugging time up this weekend.

Judging by the input time, I'm guessing the logic is trying to do epoch -7 hours.

If you are using Ian's code
Code:
$date = date( "D, d M Y H:i:s T" , strtotime( convert_date( $day . ' ' . $hour ) ));
you are only sending the day and hour to the script be processed. The Date is nowhere to be found in the convert_date.
Posted by: Gremelin

Re: PHP - Replacing output format of date... - 09/16/05 03:11 PM

I was trying to use ian's function/code but it got all sorts of wacky lol... What I have thus far is dirty as hell lol, wanna get it to work before trying to clean house and all ...
Posted by: Ron M

Re: PHP - Replacing output format of date... - 09/16/05 04:05 PM

Here's a snippet of code that I tried and it is practically working:

Code:
<?

$postdate = "08-31-2005";
$posttime = "05:54 AM";

$pd_array = explode("-",$postdate);
$pt_array = split('[ :]',$posttime);
if ($pt_array[2] == "PM") {
	$pt_array[0] += 12;
}

$display2 = date("D, d M Y H:i:s T",mktime($pt_array[0], $pt_array[1], 0, $pd_array[0], $pd_array[1], $pd_array[2]));

echo $display2;

?>
Posted by: Gremelin

Re: PHP - Replacing output format of date... - 09/16/05 08:44 PM

Hey ron, quick question; what time is it when it's 12:30pm ...

What I've got so far is here but we're still getting the date read wierd (time anyway); the original forum is here

I can get the blasted date to work, but the damned time...
Posted by: Ron M

Re: PHP - Replacing output format of date... - 09/19/05 01:30 PM

Oooops....

Code:
<?

$postdate = "08-31-2005";
$posttime = "05:54 AM";

$pd_array = explode("-",$postdate);
$pt_array = split('[ :]',$posttime);
if ($pt_array[2] == "PM" && $pt_array[2] != 12) {
	$pt_array[0] += 12;
}

$display2 = date("D, d M Y H:i:s T",mktime($pt_array[0], $pt_array[1], 0, $pd_array[0], $pd_array[1], $pd_array[2]));

echo $display2;

?>
If you pass $posttime and $postdate to my code, it *should* work correctly. The time zone might be off if you have anything in $FudgedOffset.
Posted by: §intå×

Re: PHP - Replacing output format of date... - 09/21/05 08:17 PM

Bah I was on the right track sort of. I swear I hate time. Isn't there a way to conver to the UNIX epoch? Then you could just do the math in a function to create the date again however you wanted. Ganted that is a pain in the ass and takes a bit of thought with leap year, day light savings time and all that happy horse shit.

Hey Ron M how does your script stand up against oddities like that?