|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
告诉你了一个方式,但是缺少努力这一环节,那也是白搭。 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
学习了六个多月PHP了,还是个新手,在这里受到了很多人的帮助,谢谢你们! |
|