热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP入门读书笔记(十五):日期和时间

一、从获取当前时间说起看一段代码:输出结果:2021-02-0301:27:47看到这个时间是不是觉得奇怪,这不是当前的时间,和我们北京时间差了8个小时。

一、从获取当前时间说起

看一段代码:

 
输出结果:
2021-02-03 01:27:47  

看到这个时间是不是觉得奇怪,这不是当前的时间,和我们北京时间差了8个小时。其实在我们打印这句话的时候,语言的警告已经告诉我们了。

It is not safe to rely on the system’s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone ‘UTC’ for now, but please set date.timezone to select your timezone. In。

这句话的大概意思就是告诉我们依赖系统的时区设置是不安全的,必须使用日期时区设置或者date_default_timezone_set()函数设置。默认是使用UTC时间(通用协调时间Universal Time Coodrdinated,缩写UTC),UTC时间与格林威治标准时间相同。

1、修改php.ini文件来修改时区设置

找到php安装目录下的php.ini文件,找到[date]下的“;date.timezOne=”选项,将其修改为“date.timezOne=Asia/Hong_Kong”,然后重启apache 服务器。

2、在应用程序中,使用时间日期函数之前添加如下函数:

 date_default_timezone_set(timezone);  

参数timezone为php可识别的时区名称,如果时区名称无法识别,则系统采用UTC时间。可以在PHP手册中找到各时区的名称列表。我们国家的北京时间可以使用的时区包括:PRC(中华人民共和国)、Asia/Chongqing(重庆)、Asia/Shanghai(上海)、Asia/Urumqi(乌鲁木齐),这几个都是一样的。

这个方式适合将程序上传在空间中,不能修改php.ini文件,只能使用这种方式对时区进行设置。

 
输出结果:
2021-02-03 09:30:15  

二、获取时间戳

1、获得本地化时间戳

mktime()函数将一个时间转换成UNIX时间戳

 语法格式:int mktime(int hour,int minute,int second,int month,int day,int year,[int is_dst]);  

时间戳是一个长整数,包含了从unix纪元(1970年1月1日)到指定时间的秒数。参数是可以从右到左省略的。省略的参数将会被设置成本地日期和时间的当前值。

hour:小时数 minute:分钟数

second:秒数(1分钟之内) month:月份数

day:天数 year:年份数。可以是两位数或者四位数,0-69对应2000-2069,70-100对应于1970-2000

Is_dst:在夏令时可以被设置为1,如果不是则设置为0。如果不确定是否为夏令时则设置为-1(-1是默认值)

注意:有效的时间戳范围是格林威治时间1901年12月13日20时45分54秒到2038年1月19日3时14分7秒(此范围符合32位有符号整数的最小值和最大值)。在windows系统中中此范围限制为从1970年1月1日到2038年1月19日

 ";
echo "当前日期:".date("Y-m-d",$date);
echo "
"; echo "当前时间:".date("H:i:s",$date); ?> 输出结果: 当前时间戳:1612318185 当前日期:2021-02-03 当前时间:10:09:45

2、获取当前时间戳

time()函数也可以获取当前的unix时间戳,返回值是从unix纪元(格林威治时间1970年1月1日 00:00:00)到当前时间的秒数。

 语法格式:int time(void);  
 ";
$date2 = $date + (1*24*60*60);
echo "今天日期:".date("Y-m-d",$date);
echo "
"; echo "明天日期:".date("Y-m-d",$date2); echo "
"; ?> 输出结果: 当前时间戳:1612318730 今天日期:2021-02-03 明天日期:2021-02-04

三、获取当前日期和时间
 语法格式:date(string format,[int timestamp]);  

date() 函数返回参数timestamp按照指定格式format而产生的 字符串 。timestamp是可选的,省略就是使用当前时间。format就是指定的的日期、时间格式。这里先介绍几个时间日期的预定义变量。后面再介绍格式化。

DATE_ATOM:原子钟格式

DATE_COOKIE:HTTP COOKIEs格式

DATE_RSS:RSS格式

DATE_ISO8601:ISO-8601格式

DATE_W3C:World Wide Web Consortium格式

DATE_RFC850:RFC850格式

DATE_RFC822:RFC822格式

  DATE_ATOM: ".date(DATE_ATOM);
echo "

DATE_COOKIE: ".date(DATE_COOKIE); echo "

DATE_RSS: ".date(DATE_RSS); echo "

DATE_ISO8601: ".date(DATE_ISO8601); echo "

DATE_W3C: ".date(DATE_W3C); echo "

DATE_RFC850: ".date(DATE_RFC850); echo "

DATE_RFC822: ".date(DATE_RFC822); ?> 输出结果: DATE_ATOM: 2021-02-03T10:33:17+08:00 DATE_COOKIE: Wednesday, 03-Feb-2021 10:33:17 CST DATE_RSS: Wed, 03 Feb 2021 10:33:17 +0800 DATE_ISO8601: 2021-02-03T10:33:17+0800 DATE_W3C: 2021-02-03T10:33:17+08:00 DATE_RFC850: Wednesday, 03-Feb-21 10:33:17 CST DATE_RFC822: Wed, 03 Feb 21 10:33:17 +0800

四、获取日期和时间信息
 语法格式:array getdate(int timestamp);  

函数返回数组形式的日期和时间信息,如果没有参数timestamp,则以当前时间为准。关联的数组元素说明如下:

seconds:秒,返回值范围0-59

minutes:分钟,返回值范围0-59

hours:小时,返回值范围0-23

mday:月份中的第几天。返回值范围1-31

wday:星期中的第几天,返回值范围0(表示星期日)- 6(表示星期六)

mon:月份数字,返回值范围1-12

year:4位数字表示的完整年份。

yday:一年中的第几天,返回值范围0-365

weekday:星期几的完整文本表示,返回值范围为Sunday-Saturday

month:月份的完整文本表示,返回值范围为January – December

0:返回从unix纪元开始到当前时间的秒数

 ";
echo " $arr[hours]:$arr[minutes]:$arr[seconds]  $arr[weekday] ";
echo "
"; echo "今天是一年中的第 $arr[yday] 天"; ?> 输出结果: 今天是:2021-2-3 10:50:44 Wednesday 今天是一年中的第 33 天

五、检验日期的有效性
 语法格式:bool checkdate(int month,int day,int year);  

其中,month的有效值是1-12,day的有效值为当月的最大天数(1-31)(如1月是31天,2月如果是闰年为29天),year的有效值是1-32767 。

返回是布尔类型,表示该日期是否有效。true为有效,false为无效。

 ";
var_dump(checkdate(2,29,2021));
echo "
"; var_dump(checkdate(2,30,2021)); echo "
"; var_dump(checkdate(2,31,2021)); ?> 输出结果: bool(true) bool(false) bool(false) bool(false)

六、格式化日期和时间

date()函数format的格式化选项如下面所示:

d – 一个月中的第几天(从 01 到 31)

D – 星期几的文本表示(用三个字母表示)

j – 一个月中的第几天,不带前导零(1 到 31)

l(’L’ 的小写形式)- 星期几的完整的文本表示

N – 星期几的 ISO-8601 数字格式表示(1 表示 Monday[星期一],7 表示 Sunday[星期日])

S – 一个月中的第几天的英语序数后缀(2 个字符:st、nd、rd 或 th。与 j 搭配使用)

w – 星期几的数字表示(0 表示 Sunday[星期日],6 表示 Saturday[星期六])

z – 一年中的第几天(从 0 到 365)

W – 用 ISO-8601 数字格式表示一年中的星期数字(每周从 Monday[星期一]开始)

F – 月份的完整的文本表示( January [一月份] 到 December[十二月份])

m – 月份的数字表示(从 01 到 12)

M – 月份的短文本表示(用三个字母表示)

n – 月份的数字表示,不带前导零(1 到 12)

t – 给定月份中包含的天数

L – 是否是闰年(如果是闰年则为 1,否则为 0)

o – ISO-8601 标准下的年份数字

Y – 年份的四位数表示

y – 年份的两位数表示

a – 小写形式表示:am 或 pm

A – 大写形式表示:AM 或 PM

B – Swatch Internet Time(000 到 999)

g – 12 小时制,不带前导零(1 到 12)

G – 24 小时制,不带前导零(0 到 23)

h – 12 小时制,带前导零(01 到 12)

H – 24 小时制,带前导零(00 到 23)

i – 分,带前导零(00 到 59)

s – 秒,带前导零(00 到 59)

u – 微秒(PHP 5.2.2 中新增的)

e – 时区标识符(例如:UTC、GMT、Atlantic/Azores)

I(i 的大写形式)- 日期是否是在夏令时(如果是夏令时则为 1,否则为 0)

O – 格林威治时间(GMT)的差值,单位是小时(实例:+0100)

P – 格林威治时间(GMT)的差值,单位是 hours:minutes(PHP 5.1.3 中新增的)

T – 时区的简写(实例:EST、MDT)

Z – 以秒为单位的时区 偏移量 。UTC 以西时区的偏移量为负数(-43200 到 50400)

c – ISO-8601 标准的日期(例如 2013-05-05T16:34:42+00:00)

r – RFC 2822 格式的日期(例如 Fri, 12 Apr 2013 12:01:05 +0200)

U – 自 Unix 纪元(January 1 1970 00:00:00 GMT)以来经过的秒数

七、显示本地化的日期和时间

不同的国家和地区,有使用不同的时间,日期,货币和字符集。如西方国家使用Tuesday,我们国家表示星期四。

1、setlocale()函数:改变php默认的本地化环境

 语法格式:string setlocale(string category,[string locale]);  

参数category的选项如下:

LC_ALL – 包括下面的所有的设置本地化规则

LC_COLLATE – 排序次序,字符串比较

LC_CTYPE – 字符串分类和转换(例如所有字符大写或小写)

LC_MESSAGES – 系统消息格式

LC_MONETARY – 本地化环境的货币格式

LC_NUMERIC – 本地化环境的数字格式

LC_TIME – 本地化环境的日期和时间格式

参数locale如果为空,就会使用系统环境变量的locale或者lang的值,否则就会应用locale参数所指定的本地化环境。如:en_US为美国本地化环境,chs则是简体中文,cht为繁体中文。

2、strftime()函数:根据本地化环境设置来格式化输出日期和时间

 语法格式:string strftime(string format,int timestamp);  

该函数返回指定的格式化字符串对参数timestamp进行格式化输出字符串。如果没有给出timestamp则用本地时间。月份,星期和其他语言相关的字符串写法和setlocale函数设置的当前区域有关。

参数format的转换标记如下:

%a – 星期几名称的简写

%A – 星期几名称的全称

%b – 月份名称的简写

%B – 月份名称的全称

%c – 首选的日期和时间表示法

%C – 表示世纪的数字(年份除以 100,范围从 00 到 99)

%d – 一个月中的第几天(01 到 31)

%D – 时间格式,与 %m/%d/%y 表示法相同

%e – 一个月中的第几天(1 到 31)

%g – 与 %G 表示法类似,但不带世纪

%G – 与 ISO 星期数对应的 4 位数年份(见 %V)

%h – 与 %b 表示法相同

%H – 小时,使用 24 小时制(00 到 23)

%I – 小时,使用 12 小时制(01 到 12)

%j – 一年中的第几天(001 到 366)

%m – 月份(01 到 12)

%M – 分

%n – 换行符

%p – 与给定的时间值相对应的 am 或 pm

%r – a.m. 和 p.m. 的时间标记法

%R – 24 小时制的时间标记法

%S – 秒

%t – tab 制表符

%T – 当前时间,与 %H:%M:%S 表示法相同

%u – 星期几的数字表示(1 到 7),Monday[星期一] = 1。警告:在 Sun Solaris 系统中,Sunday[星期日] = 1

%U – 当年包含的周数,从第一个星期日开始,作为第一周的第一天

%V – 当年包含的 ISO 8601 格式下的周数(01 到 53),week 1 表示当年的第一周,至少要有四天,且以星期一作为周的第一天

%W – 当年包含的周数,从第一个星期一开始,作为第一周的第一天

%w – 以十进制数形式表示一周中的某天,Sunday[星期日] = 0

%x – 首选的日期表示法,不带时间

%X – 首选的时间表示法,不带日期

%y – 不包含表示世纪的数字的年份表示(范围从 00 到 99)

%Y – 包含表示世纪的数字的年份表示

%Z 或 %z – 时区名称或简写

%% – 输出一个 % 字符

 ";
setlocale(LC_ALL,"chs");
echo "中文简体格式:".strftime("%A");
echo "
"; setlocale(LC_ALL,"cht"); echo "繁体中文格式:".strftime("%A"); ?> 输出结果: 美国格式:Wednesday 中文简体格式:星期三 繁体中文格式:琍戳

注意:本页面的编码格式是gb2312,所以繁体中文的日期是乱码,将编码格式改为big5,繁体中文将显示处理,但其他文字变成乱码了,可以自行修改查看。

八、将日期和时间解析为unix时间戳
 语法格式:int strtotime(string time,[int now]);  

可以将英文文本的日期和时间解析为unix时间戳,其值是相对于参数now给出的时间。如果没有提供参数,则使用系统当前时间。

如果参数time的格式是绝对时间,则now参数不起作用。如果是相对时间,则对应的时间就是参数now来提供的。如果解析失败返回false,在5.1之前的版本失败返回-1。

 ";
echo "格式化再输出:".date("Y-m-d H:i:s",$now);
echo "
"; $now = strtotime("5 May 2021"); echo "5 May 2021:".$now; echo "
"; echo "格式化再输出:".date("Y-m-d H:i:s",$now); echo "
"; $now = strtotime("+3 day"); echo "+3 day:".$now; echo "
"; echo "格式化再输出:".date("Y-m-d H:i:s",$now); echo "
"; $now = strtotime("+1 week"); echo "+1 week:".$now; echo "
"; echo "格式化再输出:".date("Y-m-d H:i:s",$now); echo "
"; $now = strtotime("next Thursday"); echo "next Thursday:".$now; echo "
"; echo "格式化再输出:".date("Y-m-d H:i:s",$now); echo "
"; $now = strtotime("last Monday"); echo "last Monday:".$now; echo "
"; echo "格式化再输出:".date("Y-m-d H:i:s",$now); echo "
"; ?> 输出结果: now:1612324354 格式化再输出:2021-02-03 11:52:34 5 May 2021:1620144000 格式化再输出:2021-05-05 00:00:00 +3 day:1612583554 格式化再输出:2021-02-06 11:52:34 +1 week:1612929154 格式化再输出:2021-02-10 11:52:34 next Thursday:1612368000 格式化再输出:2021-02-04 00:00:00 last Monday:1612108800 格式化再输出:2021-02-01 00:00:00

1、比较两个时间的大小

因为strtotime()函数返回的是时间戳格式,所以可以使用两个时间的时间戳就可以比较时间的大小。

 ";
$date2= "2021-1-1 12:00:00";
echo "时间2:".$date2;
echo "
"; $ts = strtotime($date1) - strtotime($date2); if($ts>0){ echo "时间1早于时间2"; } else{ echo "时间2早于时间1"; } ?> 输出结果: 时间1:2021-02-03 12:38:24 时间2:2021-1-1 12:00:00 时间1早于时间2

2、实现倒计时功能

 ";
$date2 = "2021-2-11";
echo $date2;
echo "
"; $s1 = strtotime($date1); $s2 = strtotime($date2); $ss1 = ceil(($s2-$s1)/3600); $ss2 = ceil(($s2-$s1)/86400); echo "离除夕还有“".$ss1."”个小时"; echo "
"; echo "离除夕还有“".$ss2."”天"; ?> 输出结果: 2021-02-03 2021-2-11 离除夕还有“192”个小时 离除夕还有”8“天

说明:ceil()函数的格式为:float ceil(float value); 该函数为取整函数,返回不小于参数value值的最小整数。如果有小数部分,则进一位。应该注意的是函数的返回类型是float型,而不是int型。

九、计算页面脚本的运行时间
 语法格式:string microtime(void);  

该函数返回当前unix时间戳和微秒数。返回格式为msec sec的字符串。其中sec是当前unix时间戳,msec是微秒数。

 ";
list($msec,$sec) = explode(" ",$date);
$rs = (float)$msec+(float)$sec;
return $rs;
}
$st = run_time();
for($i=0;$i<100;$i++){
echo $i." ";
}
sleep(5); //延迟5秒
$et = run_time();
$rs = $et - $st;
echo "该实例运行了“".$rs."”秒";?>
输出结果:
函数:0.80279900 1612331272
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1  

explode()函数:根据指定字符分割字符串为数组

list() 函数:将数组中的值赋值给一些变量

sleep()函数:延迟几秒代码执行/睡眠几秒

十、其他日期和时间函数

这里只是大概介绍,参数说明可以详细看手册资料。

date_add() 添加日、月、年、时、分和秒到一个日期。

date_create_from_format() 返回一个根据指定格式进行格式化的新的 DateTime 对象。

date_create() 返回一个新的 DateTime 对象。

date_date_set() 设置一个新的日期。

date_default_timezone_get() 返回默认时区,被所有的 Date/Time 函数使用。

date_default_timezone_set() 设置默认时区,被所有的 Date/Time 函数使用。

date_diff() 返回两个日期间的差值。

date_format() 返回根据指定格式进行格式化的日期。

date_get_last_errors() 返回日期字符串中的警告/错误。

date_interval_create_from_date_string() 从字符串的相关部分建立一个 DateInterval。

date_interval_format() 格式化时间间隔。

date_isodate_set() 设置 ISO 日期。

date_modify() 修改时间戳。

date_offset_get() 返回时区偏移。

date_parse_from_format() 根据指定的格式返回一个带有指定日期的详细信息的关联数组。

date_parse() 返回一个带有指定日期的详细信息的关联数组。

date_sub() 从指定日期减去日、月、年、时、分和秒。

date_sun_info() 返回一个包含有关指定日期与地点的日出/日落和黄昏开始/黄昏结束的信息的数组。

date_sunrise() 返回指定日期与地点的日出时间。

date_sunset() 返回指定日期与地点的日落时间。

date_time_set() 设置时间。

date_timestamp_get() 返回 Unix 时间戳。

date_timestamp_set() 设置基于 Unix 时间戳的日期和时间。

date_timezone_get() 返回给定 DateTime 对象的时区。

date_timezone_set() 设置 DateTime 对象的时区。

gettimeofday() 返回当前时间。

gmdate() 格式化 GMT/UTC 日期和时间。

gmmktime() 返回 GMT 日期的 UNIX 时间戳。

gmstrftime() 根据区域设置格式化 GMT/UTC 日期和时间。

idate() 格式化本地时间/日期为整数。

localtime() 返回本地时间。

strptime() 解析由 strftime() 生成的时间/日期。

timezone_abbreviations_list() 返回包含夏令时、偏移量和时区名称的关联数组。

timezone_identifiers_list() 返回带有所有时区标识符的数值数组。

timezone_location_get() 返回指定时区的位置信息。

timezone_name_from_ abbr() 根据时区缩略语返回时区名称。

timezone_name_get() 返回时区的名称。

timezone_offset_get() 返回相对于 GMT 的时区偏移。

timezone_open() 创建一个新的 DateTimeZone 对象。

timezone_transitions_get() 返回时区的所有转换。

timezone_version_get() 返回时区数据库的版本。

明天我们来看看PHP和Web页面中的使用


推荐阅读
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 本文介绍了PHP常量的定义和使用方法,包括常量的命名规则、大小写敏感性、全局范围和标量数据的限制。同时还提到了应尽量避免定义resource常量,并给出了使用define()函数定义常量的示例。 ... [详细]
  • 本文介绍了禅道作为一款国产开源免费的测试管理工具的特点和功能,并提供了禅道的搭建和调试方法。禅道是一款B/S结构的项目管理工具,可以实现组织管理、后台管理、产品管理、项目管理和测试管理等功能。同时,本文还介绍了其他软件测试相关工具,如功能自动化工具和性能自动化工具,以及白盒测试工具的使用。通过本文的阅读,读者可以了解禅道的基本使用方法和优势,从而更好地进行测试管理工作。 ... [详细]
  • 【重识云原生】第四章云网络4.8.3.2节——Open vSwitch工作原理详解
    2OpenvSwitch架构2.1OVS整体架构ovs-vswitchd:守护程序,实现交换功能,和Linux内核兼容模块一起,实现基于流的交换flow-basedswitchin ... [详细]
  • 安装oracle软件1创建用户组、用户和目录bjdb节点下:[rootnode1]#groupadd-g200oinstall[rootnode1]#groupad ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了StartingzookeeperFAILEDTOSTART相关的知识,希望对你有一定的参考价值。下载路径:https://ar ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • Node.js学习笔记(一)package.json及cnpm
    本文介绍了Node.js中包的概念,以及如何使用包来统一管理具有相互依赖关系的模块。同时还介绍了NPM(Node Package Manager)的基本介绍和使用方法,以及如何通过NPM下载第三方模块。 ... [详细]
author-avatar
赤血-魔鬼
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有