日期和时间

User Contributed Notes

rjstatic 20-Mar-2011 07:44
A very verbose loop.  The construct function for the DateTime class isn't working properly for me but this works.
    <?php
   
    $date
= "2011/03/20";
   
$date = explode("/", $date);
   
   
$time = "07:16:17";
   
$time = explode(":", $time);
   
   
$tz_string = "America/Los_Angeles"; // Use one from list of TZ names http://php.net/manual/en/timezones.php
   
$tz_object = new DateTimeZone($tz_string);
   
   
$datetime = new DateTime();
   
$datetime->setTimezone($tz_object);
   
$datetime->setDate($date[0], $date[1], $date[2]);
   
$datetime->setTime($time[0], $time[1], $time[2]);
   
    print
$datetime->format('Y/m/d H:i:s'); // Prints "2011/03/20 07:16:17"
   
   
?>
Moo0z0r 21-Jun-2010 08:58
I think it's important to mention with the DateTime class that if you're trying to create a system that should store UNIX timestamps in UTC/GMT, and then convert them to a desired custom time-zone when they need to be displayed, using the following code is a good idea:

<?php
date_default_timezone_set
('UTC');
?>

Even if you use something like:

<?php
$date
->setTimezone( new DateTimeZone('UTC') );
?>

... before you store the value, it doesn't seem to work because PHP is already trying to convert it to the default timezone.
kapoor_rajiv at hotmail dot com 12-Oct-2009 01:59
We can also get the submitted datetime (e.g. 2009-11-06 07:03:41) using the following:

<?php
$DateOfRequest
= date("Y-m-d H:i:s", strtotime($_REQUEST["DateOfRequest"]));
?>

Or another good example of getting DateTime:

<?php
$DateOfRequest
= date("Y-m-d H:i:s", mktime($_REQUEST["Hour"],$_REQUEST["Min"],$_REQUEST
["Sec"],$_REQUEST["Month"],$_REQUEST["Day"],$_REQUEST["Year"]));           
?>
zoe at monkeehouse dot com 25-Oct-2008 12:52
Should you want to convert between HH:MM:SS and plain seconds like in MySQL, these functions should do the trick:

<?php
function time_to_sec($time) {
   
$hours = substr($time, 0, -6);
   
$minutes = substr($time, -5, 2);
   
$seconds = substr($time, -2);

    return
$hours * 3600 + $minutes * 60 + $seconds;
}

function
sec_to_time($seconds) {
   
$hours = floor($seconds / 3600);
   
$minutes = floor($seconds % 3600 / 60);
   
$seconds = $seconds % 60;

    return
sprintf("%d:%02d:%02d", $hours, $minutes, $seconds);
}
?>