Theory of Operation | Zend_Date Programmer's Reference Guide | Zend_Date API Overview

# Basic Methods

The following sections show basic usage of Zend_Date primarily by example. For this manual, "dates" always imply a calendar date with a time, even when not explicitly mentioned, and vice-versa. The part not specified defaults to an internal representation of "zero". Thus, adding a date having no calendar date and a time value of 12 hours to another date consisting only of a calendar date would result in a date having that calendar date and a time of "noon".

Setting only a specific date, with no time part, implies a time set to 00:00:00. Conversely, setting only a specific time implies a date internally set to 01.01.1970 plus the number of seconds equal to the elapsed hours, minutes, and seconds identified by the time. Normally, people measure things from a starting point, such as the year 0 A.D. However, many software systems use the first second of the year 1970 as the starting point, and denote times as a timestamp offset counting the number of seconds elapsed from this starting point.

# Current Date

Without any arguments, constructing an instance returns an object in the default locale with the current, local date using PHP's time() function to obtain the » UNIX timestamp for the object. Make sure your PHP environment has the correct default timezone.

Example #1 Creating the Current Date

1. $date = new Zend_Date();
3. // Output of the current timestamp
4. print $date;

# Zend_Date by Example

Reviewing basic methods of Zend_Date is a good place to start for those unfamiliar with date objects in other languages or frameworks. A small example will be provided for each method below.

# Output a Date

The date in a Zend_Date object may be obtained as a localized integer or string using the get() method. There are many available options, which will be explained in later sections.

Example #2 get() - Output a Date

1. $date = new Zend_Date();
3. // Output of the desired date
4. print $date->get();

# Setting a Date

The set() method alters the date stored in the object, and returns the final date value as a timestamp (not an object). Again, there are many options which will be explored in later sections.

Example #3 set() - Set a Date

1. $date = new Zend_Date();
3. // Setting of a new time
4. $date->set('13:00:00',Zend_Date::TIMES);
5. print $date->get(Zend_Date::W3C);

# Adding and Subtracting Dates

Adding two dates with add() usually involves adding a real date in time with an artificial timestramp representing a date part, such as 12 hours, as shown in the example below. Both add() and sub() use the same set of options as set(), which will be explained later.

Example #4 add() - Adding Dates

1. $date = new Zend_Date();
3. // changes $date by adding 12 hours
4. $date->add('12:00:00', Zend_Date::TIMES);
6. echo "Date via get() = ", $date->get(Zend_Date::W3C), "\n";
8. // use magic __toString() method to call Zend_Date's toString()
9. echo "Date via toString() = ", $date, "\n";

# Comparison of Dates

All basic Zend_Date methods can operate on entire dates contained in the objects, or can operate on date parts, such as comparing the minutes value in a date to an absolute value. For example, the current minutes in the current time may be compared with a specific number of minutes using compare(), as in the example below.

Example #5 compare() - Compare Dates

1. $date = new Zend_Date();
3. // Comparation of both times
4. if ($date->compare(10, Zend_Date::MINUTE) == -1) {
5. print "This hour is less than 10 minutes old";
6. } else {
7. print "This hour is at least 10 minutes old";
8. }

For simple equality comparisons, use equals(), which returns a boolean.

Example #6 equals() - Identify a Date or Date Part

1. $date = new Zend_Date();
3. // Comparation of the two dates
4. if ($date->equals(10, Zend_Date::HOUR)) {
5. print "It's 10 o'clock. Time to get to work.";
6. } else {
7. print "It is not 10 o'clock. You can keep sleeping.";
8. }

Theory of Operation | Zend_Date Programmer's Reference Guide | Zend_Date API Overview