Working backwards.....
You can access the current time in PHP through the Date() function. There are about 25 different arguements that determine what is returned. Check the manual for specifics as it is a lot to type out here. A basic set would look like this:
Date(g:i a);
Would return the current time as something like "3:31 pm".
Capitalizing the g, Date(G:i a);, would add a leading zero to numbers one thru ten returning "03:31 pm".
Capitalizing the a, Date G:i A);, would capitalize the am/pm returning "03:31 PM".
There are arguements for everything from unix time to day, date, month, year, etc. To add an hour all you would need to do is split the string and capture the first two characters returned, in this case "03", add 1 and put the string back together. A simple conditional loop would be needed to ensure that if the number returned is equal to twelve then you reset to "01" and change the am/pm rather than adding 1.
As for your first question, if I understand it correctly, you would not really be able to use a Date type. It automatically stores the date in a YYYY-MM-DD format. Besides, you're receiving the variable as a string, so why not just continue treating it as a string? PHP doesn't limit what you can do with it. You can do a little string manipulation to strip the "/" or "-" from the variable, and by breaking apart the string put it in any order you like. From there you can even add or subtract to any date you want.