|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
PHP有很多便于使用的函数以显示及处理日期。 要以某种特定格式显示日期或时间,可使用date()函数。它有两个参数:如何显示日期的格式以及代表你所要显示日期的时间戳。这个时间戳必须是先前所提到的从 1970 年起算的总秒数(假如你要使用当前时间可使用time()函数,此函数会返回“现在”的时间戳)。date() 有很多格式选项,犹如C语言中的strftime()函数或Perl语言的POSIX::strftime()函数相同。 <?php $birthday_stamp = mktime(19,45,0,3,10,1975); $birthday_formatted = date(\\'F d, Y - g:ia\\',$birthday_stamp); echo "David was born on $birthday_formatted." ?> 会显示 David was born on March 10, 1975--7:45 p.m. 当然,假如你需要某已知的特定日期,这种复杂的格式函数并不会十分有用。因为你事先已经知道你的格式将会是什么。当在处理需要用户选择某日期的表单输出部分时,这些函数会比较有用: <SELECT NAME="when"> <?php $d = time(); for ($i = 0; $i < 10; $i++) { echo \\'<OPTION VALUE="\\'.$d.\\'">\\'.date(\\'F d\\',$d); $d += 86400; } ?> </SELECT> 以上会输出一个单选框,其中有十个选项――今天及以后九天。在程序循环开始之前,我们将当前时间存放于变量$d中。每一个<OPTION>值会被显示,而其中的值会是以Unix时间戳计算,且所显示出来的文字设定为月、日(“July 27”、“July 28”等等)。在显示值后,变量$d 会被加上 86,400(是一天二十四小时的总秒数――24小时*60分钟*60秒)。 通过结合mktime()及date()函数,你就可以得出关于某特定用户输入日期的相关信息。那假如要寻找从某特定日期算起的第一个星期天(或者一周中的任意一天)呢?首先,先编写一个会输出适当格式的函数: <?php functiondisplay_form() { global $PHP_SELF; $dotw = array(\\'Sunday\\',\\'Monday\\',\\'Tuesday\\',\\'Wednesday\\',\\'Thursday\\', \\'Friday\\',\\'Saturday\\'); $months = array( 1 => \\'January\\',\\'February\\',\\'March\\',\\'April\\',\\'May\\',\\'June\\', \\'July\\',\\'August\\',\\'September\\',\\'October\\',\\'November\\',\\'December\\'); ?> <FORM TARGET="<?php echo $PHP_SELF; ?>" METHOD=GET> Find the first <SELECT NAME="dotw"> <?php for ($i = 0; $i < 7; $i++) { echo "<OPTION> $dotw[$i]"; } echo \\'</SELECT> after <SELECT NAME="month">\\'; for ($i = 1; $i <= 12; $i++) { echo "<OPTION VALUE="$i"> $months[$i]"; } echo \\'</SELECT> <SELECT NAME="day">\\'; for ($i = 1; $i <= 31; $i++) { echo "<OPTION> $i"; } echo \\'</SELECT>, <SELECT NAME="year">\\'; $start_year = date(\\'Y\\') - 10; $end_year = $start_year + 20; for ($i = $start_year; $i <= $end_year; $i++) { echo "<OPTION> $i"; } echo \\'<INPUT TYPE="HIDDEN" NAME="stage" VALUE="process">\\'; echo \\'</SELECT> <INPUT TYPE="SUBMIT" VALUE="Do it!"7></FORM>\\'; } ?> 这当中含有一些函数是我们到目前为止还没讨论过的。$months数组写得略微不同,因为需要让一月份索引为1,而非0。另外,由程序自动产生此表单要比将所有这个表单元素的值一一手动列出要更为轻松,因此,顶端的表单开始部分是display_form()函数中唯一不是属于 PHP模式的。此外,使用数据(“Y”)设置变量$start_year以及变量$end_year能够方便处理从今年算起十年前后的时间范围。 以下是处理表单的函数: <?php function process_form() { global $dotw; global $month; global $day; global $year; $timestamp = mktime(0,0,0,$month,$day,$year); $next_dotw = \\'\\'; $next_timestamp = $timestamp; while ($next_dotw != $dotw) { $next_timestamp += 86400; $next_dotw = date(\\'l\\',$next_timestamp); } $formatted_first = date(\\'F d, Y\\',$timestamp); $formatted_next = date(\\'F d, Y\\',$next_timestamp); echo "The first $dotw after $formatted_first is $formatted_next."; } ?> 首先,此代码将所得到的日期转化为Unix时间戳形式。假如我们需要更为谨慎的话,可以加入某些代码以确保所得到的日期在合法的日期范围内,不过在这此我们暂时没有必要这样做。 当我们要寻找的“下一天”的星期数不是用户所输入的一个星期数时,循环继承。当不相同时,日期所代表的总秒数就会被增加(同样是86400秒=24小时*60分钟*60秒),然后那个秒数所代表的星期数就会被重新计算。 一旦星期数一致,process_form() 函数就会输出一行准确消息: The first Sunday after June 25, 1999 is June 27, 1999. 我们同样需要那个认识的主循环将这些函数捆绑在一起: <?php if (empty($stage)) { display_form(); } else { process_form(); } ?> 日期处理代码有时需要更为复杂以处理夏令时及不同时区,不过date()以及mktime()函数都是处理Unix时间戳变换的基本工具,它们在算法上操作简朴,且以直观方法表达日期与时间。函数date()以及mktime()以机器所在时区来对时间进行操作。假如想使用格林威治时间(GMT),则可使用函数gmdate()以及gmmktime()。 例如,对于一台处于美国东部夏令时的计算机(落后格林威治时间四小时): <?php $today = mktime(12,0,0,6,25,1999); echo \\'Here it is \\'.date(\\'g:i:s a, F d, Y\\',$today); echo \\'\\'; echo \\'In GMT it is \\'.gmdate(\\'g:i:s a, F d, Y\\',$today); ?> 将显示 Here it is 12:00:00 pm, June 25, 1999 In GMT it is 4:00:00 pm, June 25, 1999 返回类别: 教程 上一教程: FreeBSD下的vi支持中文显示和编辑 下一教程: php扩展学习笔记 您可以阅读与"PHP中的日期及时间"相关的教程: · 如何使用PHP中的日期和时间函数 · PHP中的日期处理 · php中的时间处理 · 怎样校验输入的日期为合法的日期?这里有一个例子(checkdate.php3) · PHP中的正规表达式(二) |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |