PHP随手记1--内置函数date

1. date_default_timezone_set

date_default_timezone_set — 设定用于一个脚本中所有日期时间函数的默认时区

在php中只用 mktime() 函数时有时会报错,解决办法是在<?php 后加一行

date_default_timezone_set('Asia/ShangHai');

2. date内置函数参数列表

date — 格式化一个本地时间/日期

说明:

string date ( string $format [, int $timestamp ] )

返回将整数 timestamp 按照给定的格式字串而产生的字符串。如果没有给出时间戳则使用本地当前时间。换句话说,timestamp 是可选的,默认值为 time()

下面表格引用自php官方手册,放在这里方便查阅:

d月份中的第几天,有前导零的 2 位数字0131
D星期中的第几天,文本表示,3 个字母MonSun
j月份中的第几天,没有前导零131
l(“L”的小写字母)星期几,完整的文本格式SundaySaturday
NISO-8601 格式数字表示的星期中的第几天(PHP 5.1.0 新加)1(表示星期一)到 7(表示星期天)
S每月天数后面的英文后缀,2 个字符stndrd 或者 th。可以和 j 一起用
w星期中的第几天,数字表示0(表示星期天)到 6(表示星期六)
z年份中的第几天0366
星期------
WISO-8601 格式年份中的第几周,每周从星期一开始(PHP 4.1.0 新加的)例如:42(当年的第 42 周)
------
F月份,完整的文本格式,例如 January 或者 MarchJanuaryDecember
m数字表示的月份,有前导零0112
M三个字母缩写表示的月份JanDec
n数字表示的月份,没有前导零112
t给定月份所应有的天数2831
------
L是否为闰年如果是闰年为 1,否则为 0
oISO-8601 格式年份数字。这和 Y 的值相同,只除了如果 ISO 的星期数(W)属于前一年或下一年,则用那一年。(PHP 5.1.0 新加)Examples: 1999 or 2003
Y4 位数字完整表示的年份例如:19992003
y2 位数字表示的年份例如:9903
时间------
a小写的上午和下午值ampm
A大写的上午和下午值AMPM
BSwatch Internet 标准时000999
g小时,12 小时格式,没有前导零112
G小时,24 小时格式,没有前导零023
h小时,12 小时格式,有前导零0112
H小时,24 小时格式,有前导零0023
i有前导零的分钟数0059>
s秒数,有前导零0059>
时区------
e时区标识(PHP 5.1.0 新加)例如:UTCGMTAtlantic/Azores
I是否为夏令时如果是夏令时为 1,否则为 0
O与格林威治时间相差的小时数例如:+0200
P与格林威治时间(GMT)的差别,小时和分钟之间有冒号分隔(PHP 5.1.3 新加)例如:+02:00
T本机所在的时区例如:ESTMDT(【译者注】在 Windows 下为完整文本格式,例如“Eastern Standard Time”,中文版会显示“中国标准时间”)。
Z时差偏移量的秒数。UTC 西边的时区偏移量总是负的,UTC 东边的时区偏移量总是正的。-4320043200
完整的日期/时间------
cISO 8601 格式的日期(PHP 5 新加)2004-02-12T15:19:21+00:00
rRFC 822 格式的日期例如:Thu, 21 Dec 2000 16:01:07 +0200
U从 Unix 纪元(January 1 1970 00:00:00 GMT)开始至今的秒数参见 time()

  

eg:date()函数现实一个时间

  

1 <?php
2 echo date("Y-m-d H:i:s",time());
3 echo "<br />";
4 echo date("Y-m-d H:i:s",mktime(13,55,0,12,6,2017));
5 echo "<br />";

  结果显示为:

  

   参数中识别不了的元素会保留下来,用js需要一大串代码的功能,php一行代码就能实现!!!

3. php实现两个时间的差值和简单日历显示

 1 <meta charset="UTF-8" />
 2 <?php
 3 date_default_timezone_set("Asia/ShangHai");
 4 echo "<h1>自定义一个函数,返回一个时间差(XX天XX小时XX分钟XX秒)</h1>";
 5 
 6 function get_time_diff($time1=0,$time2=0){
 7     if($time1==0&&$time2==0){
 8         $diff = time();
 9     }elseif($time1>0&&$time2==0){
10         $diff = $time1;
11     }else{
12         $diff = abs($time1-$time2);
13     }
14 
15     $s = $diff%60;
16     $i = floor($diff%3600/60);
17     $h = floor($diff%(3600*24)/3600);
18     $d = floor($diff/(3600*24));
19 
20     return "<p>".$d."天".$h."小时".$i."分钟".$s."秒</p>";
21 
22 }
23 echo date("Y-m-d H:i:s");
24 echo get_time_diff();
25 echo get_time_diff(mktime(0,0,0,1,2,1970));
26 echo get_time_diff(mktime(0,0,0,12,8,2017),mktime(0,0,0,12,5,2017));
27 
28 echo "<h1>自定义一个函数,输出一个日历</h1>";
29 
30 function calendar($time=0){
31     $time = $time>0?$time:time();
32 
33     $days = date("t",$time); //当月的总天数
34 
35     $first_day = date("w",mktime(0,0,0,date("n",$time),1,date("Y",$time))); //当月1号是星期几
36 
37     $rows = ceil(($days+$first_day)/7); //日历动态部分的行数
38 
39     $count = 1;
40 
41     $current_day = date("j",$time); //当天是几号
42 
43     echo "<table border='1'>";
44     echo "<tr><th colspan='7'>".date("Y年m月",$time)."</th></tr>";
45     echo "<tr><th>日</th><th>一</th><th>二</th><th>三</th><th>四</th><th>五</th><th>六</th></tr>";
46     for($i=1;$i<=$rows;$i++){
47         echo "<tr>";
48         for($j=0;$j<7;$j++){
49 
50             if( ($i==1&&$j<$first_day) || ($i==$rows&&$count>$days) ){
51                 echo "<td>&nbsp;</td>";
52             }else{
53                 if($count==$current_day){
54                     echo "<td style='color:red;'>".$count."</td>";
55                 }else{
56                     echo "<td>".$count."</td>";
57                 }
58                 $count++;
59             }
60 
61         }
62         echo "</tr>";
63     }
64     echo "</table>";
65 }
66 calendar();
67 calendar(mktime(0,0,0,10,1,2008));

运行结果如下:

转载于:https://www.cnblogs.com/share-all/p/8006719.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值