生成日期 因为需求的不同,Zend_Date 提供了若干不同的办法来创建自己的实例,本章将介绍最方便的办法。 生成当前日期 最简单的创建日期对象是生成当前的日期,通过创建new Zend_Date()的实例 或使用静态方法 Zend_Date::now() 都可以,它们都返回当前日期的 Zend_Date 实例。 当前的日期总是包括当前的日期和时间以及当前的时区。 通过实例生成日期 通过创建一个新的实例来生成日期意味着你不需要给出参数。当然有若干个参数我们将以后来描述,但一般 来说这是最简单和最常用的方法来获得当期日期为 Zend_Date 的实例。 静态日期生成 有时候用静态方法生成日期更容易。因此,你可以使用 now() 方法, 它返回 Zend_Date 的一个新实例,就象你用 new Zend_Date() 一样。 但它将总返回当前日期并且不能用可选的参数修改。 从数据库生成日期 数据库常用来存储数据。问题是,每个数据库用不同的方式输出数据。MsSQL 数据库和 MySQL 数据库的日期标准就不一样。为简化起见,Zend_Date 可以很容易从数据库数据生成日期。 当然每个数据库都可以说把输出转换成定义好的特殊值。例如,你可以把 datetime 转换成输出分钟值。 但这很耗时并且当查询数据库时你确实需要用其它方法来处理日期。 所以我们有一个快速并方便的方法从数据库值生成日期。 快速从数据库生成日期 众所周知,所有的数据库都想尽可能快地查询数据,它们与生俱来就要快速响应。从数据库取得日期的最快 方法是使用unix时间戳。所有数据库在内部把日期值都存成时间戳(不是unix时间戳)。这意味着通过查询生 成时间戳要比转换成其它格式快。 从数据库方便地生成日期 即使是你乍一看它们都相同,但是所有数据库的标准输出还是不一样的。但它们都是 ISO 标准的一部分 并解释它,所以最容易的生成日期的方法是使用 Zend_Date::ISO_8601。 例如数据库里众所周知的 MySQLMsSQLZend_Date::ISO_8601 认可。 但所有数据库也都可以返回一个 ISO 8601 表示的日期列。 ISO 8601 一个巨大的有点是人类可读。缺点是 ISO 8601 比 unix 时间戳需要更多 的时间来处理,但也应该知道 unix 时间戳只支持 1970年1月1日以后的日期。 从数组生成日期 日期也可以从数组生成,这是个简单并容易的方法,使用的数组键是: : 日期的天数 : 日期的月数 : full year of the date 小时: 小时数 分钟: 分钟数 : 秒数 通过数组生成日期 一般地你需要给出一个完整的日期数组用于新的日期实例的生成,但当你没有给出所有值,未给出的值就是零。 这意味着如果没有给出小时值,那么就用 0 小时。 2006, 'month' => 4, 'day' => 18, 'hour' => 12, 'minute' => 3, 'second' => 10); $date = new Zend_Date($datearray); ]]> 2006, 'month' => 4, 'day' => 18); $date = new Zend_Date($datearray); ]]>