#350과 관련한 건의입니다만, 날짜/시간을 저장하는 Datetime과 (혹시 필요하다면)시간 간격을 저장하는 DatetimeSpan 클래스를 만드는 것은 어떨까요.

현재 날짜/시간 관련 처리는 매우 불편한(ztime, zdate) 방식입니다. 1970년 이전의, timestamp가 작동하지 않는 범위는 더 그렇고, 모든 날짜를 UTC 기준으로 처리하기 위해서는(사용자 Timezone 지원) 함수들을 재처리해야 합니다.

이들의 간편한 처리를 위해, Datetime 클래스를 만들어서 모든 날짜를 Datetime 형으로 저장하고 출력하게 하는 것이 좋을 것 같습니다. 내부적으로는 UTC로 저장하고 표시할 때만 사용자 Timezone으로 변환하며 add, subtract 등의 계산 메소드를 제공하여 편의를 도모할 수 있을 것입니다.

그러니까, 다음과 비슷한 형태의 클래스를 만들어서 편의를 도모하는 것이 좋지 않을까 합니다.

/classes/datetime/Datetime.class.phpDatetime 클래스
<?php
// PHP5 기준
class Datetime
{
    protected $year, $month, $date, $hour, $minute, $second;
    protected static $timezone_gap;

    public function __construct($year = 0, $month = 0, $date = 0, $hour = 0, $minute = 0, $second = 0);

    public function get(&$year, &$month, &$date, &$hour, &$minute, &$second);
    public function set($year = 0, $month = 0, $date = 0, $hour = 0, $minute = 0, $second = 0);

    public function getYear(); public function getMonth(); public function getDate();
    public function getHour(); public function getMinute(); public function getSecond();

    public function toTimestamp(); // Returns Unix timestamp from $this
    // in $format, 'C' = Date + Time (Y-m-d H:i:s or M d, Y H:i:s), 'E' = Date, 'J' = Time, etc. = default date() format
    public function format($format = 'C'); // Returns formatted output string
    public function serialize(); // Returns serialized data to save to DB, file, etc.

    public function add(DatetimeSpan $span); // If DatetimeSpan required
    public function addValue($year, $month, $date, $hour, $minute, $second);
    public function subtract(DatetimeSpan $span); // If DatetimeSpan required
    public function subtractValue($year, $month, $date, $hour, $minute, $second);
    public function difference(Datetime $datetime); // If DatetimeSpan required, returns DatetimeSpan value ($this - $datetime)

    public static function now(); // Returns current time in Datetime type
    public static function fromTimestamp($timestamp); // Returns converted Datetime data from Unix timestamp
}

class DatetimeSpan // If required
{
    protected $year, $month, $date, $hour, $minute, $second;

    public function __construct($year = 0, $month = 0, $date = 0, $hour = 0, $minute = 0, $second = 0);

    public function get(&$year, &$month, &$date, &$hour, &$minute, &$second);
    public function set($year = 0, $month = 0, $date = 0, $hour = 0, $minute = 0, $second = 0);

    public function getYear(); public function getMonth(); public function getDate();
    public function getHour(); public function getMinute(); public function getSecond();

    public function format($format = 'C'); // Returns formatted output string
    public function serialize(); // Returns serialized data to save to DB, file, etc.
}
?>

이 정도의 클래스로 모든 날짜/시간 데이터를 관리한다면 날짜/시간에 대한 계산과 일괄 처리가 간편해질 듯 합니다.