function pleac_Adding_to_or_Subtracting_from_a_Date()
{
    // Date arithmetic is probably most easily performed using timestamps [i.e. *NIX Epoch
    // Seconds]. Dates - in whatever form - are converted to timestamps, these are
    // arithmetically manipulated, and the result converted to whatever form required.
    // Note: use 'mktime' to create timestamps properly adjusted for daylight saving; whilst
    // 'strtotime' is more convenient to use, it does not, AFAIK, include this adjustment
    $when = $now + $difference;
    $then = $now - $difference;
    // ------------
    $now = mktime(0, 0, 0, 8, 6, 2003);
    $diff1 = dateOffset('day=1');
    $diff2 = dateOffset('weeks=2');
    echo 'Today is:                 ' . date('Y-m-d', $now) . "\n";
    echo 'One day in the future is: ' . date('Y-m-d', $now + $diff1) . "\n";
    echo 'Two weeks in the past is: ' . date('Y-m-d', $now - $diff2) . "\n";
    // ----------------------------
    // Date arithmetic performed using a custom function, 'dateOffset'. Internally, offset may
    // be computed in one of several ways:
    // * Direct timestamp manipulation - fastest, but no daylight saving adjustment
    // * Via 'date' built-in function - slower [?], needs a base time from which to
    //   compute values, but has daylight saving adjustment
    // * Via 'strtotime' built-in function - as for 'date'
    // * Via 'DateTime' class
    //
    // Approach used here is to utilise direct timestamp manipulation in 'dateOffset' [it's
    // performance can also be improved by replacing $tbl with a global definition etc],
    // and to illustrate how the other approaches might be used
    // 1. 'dateOffset'
    $birthtime = mktime(3, 45, 50, 1, 18, 1973);
    $interval = dateOffset('day=55', 'hours=2', 'min=17', 'sec=5');
    $then = $birthtime + $interval;
    printf("Birthtime is: %s\nthen is:      %s\n", date(DATE_RFC1123, $birthtime), date(DATE_RFC1123, $then));
    // ------------
    // 2. 'date'
    // Base values, and offsets, respectively
    $hr = 3;
    $min = 45;
    $sec = 50;
    $mon = 1;
    $day = 18;
    $year = 1973;
    $yroff = 0;
    $monoff = 0;
    $dayoff = 55;
    $hroff = 2;
    $minoff = 17;
    $secoff = 5;
    // Base date
    $birthtime = mktime($hr, $min, $sec, $mon, $day, $year, TRUE);
    $year = date('Y', $birthtime) + $yroff;
    $mon = date('m', $birthtime) + $monoff;
    $day = date('d', $birthtime) + $dayoff;
    $hr = date('H', $birthtime) + $hroff;
    $min = date('i', $birthtime) + $minoff;
    $sec = date('s', $birthtime) + $secoff;
    // Offset date
    $then = mktime($hr, $min, $sec, $mon, $day, $year, TRUE);
    printf("Birthtime is: %s\nthen is:      %s\n", date(DATE_RFC1123, $birthtime), date(DATE_RFC1123, $then));
    // ------------
    // 3. 'strtotime'
    // Generate timestamp whatever way is preferable
    $birthtime = mktime(3, 45, 50, 1, 18, 1973);
    $birthtime = strtotime('1/18/1973 03:45:50');
    $then = strtotime('+55 days 2 hours 17 minutes 2 seconds', $birthtime);
    printf("Birthtime is: %s\nthen is:      %s\n", date(DATE_RFC1123, $birthtime), date(DATE_RFC1123, $then));
    // ------------
    // 4. 'DateTime' class
    $birthtime = new DateTime('1/18/1973 03:45:50');
    $then = new DateTime('1/18/1973 03:45:50');
    $then->modify('+55 days 2 hours 17 minutes 2 seconds');
    printf("Birthtime is: %s\nthen is:      %s\n", $birthtime->format(DATE_RFC1123), $then->format(DATE_RFC1123));
}
Exemplo n.º 2
0
require_once "PHP/Framework.php";
// Core framework
require_once "PHP/Utils.php";
// Helper Tools
/* Fix Input Variables */
if (!isset($_REQUEST['Camera'])) {
    $_REQUEST['Camera'] = "";
}
if (!isset($_REQUEST['date']) || $_REQUEST['date'] == "") {
    $_REQUEST['date'] = date("Y-m-d");
}
/* Init the Page, and register core template variables */
$Page = new Page();
$Page->setField(array("CAMERA" => $_REQUEST['Camera'], "DATE_CUR" => $_REQUEST['date']));
/* Current Request */
$Page->setField(array("DATE_NEXT" => dateOffset($_REQUEST['date'], "+1 day"), "DATE_PREV" => dateOffset($_REQUEST['date'], "-1 day")));
/* Date Next/Prev */
///////////////////////////////////////////////////////
/* DVR_Engine Class				     */
///////////////////////////////////////////////////////
class DVR_Engine
{
    private static $baseFolder, $snapFolder;
    var $camList;
    function __construct($baseFolder, $snapFolder)
    {
        if (!file_exists($baseFolder) || !file_exists($snapFolder)) {
            Framework::debug(DEBUG_FATAL, "Failed to create DVR_Engine class - Specified folders do not exist!\nBase Folder: {$baseFolder}\nSnap Folder: {$snapFolder}\n");
        }
        $this->baseFolder = $baseFolder;
        $this->snapFolder = $snapFolder;