设为首页 收藏本站
查看: 675|回复: 0

[经验分享] PHP中日期和时间函数简介

[复制链接]

尚未签到

发表于 2018-12-16 07:00:27 | 显示全部楼层 |阅读模式
PHP中日期和时间相关函数简介

  一、UNIX时间戳
  在当前大多数的UNIX系统中,保存当前日期和时间的方法是:保存格林尼治标准时间从1970年1月1日零点起到当前时刻的秒数,以32为整列表示。1970年1月1日零点也称为UNIX纪元。在Windows系统下也可以使用UNIX时间戳,简称时间戳,但如果时间在1970年以前或2038年以后,处理的时候可能会出现问题。
  PHP在处理有些数据,特别是对数据库中时间类型的数据进行格式化时,经常需要先将时间类型的数据转化为UNIX时间戳再进行处理,另外,不同的数据库系统对时间类型的数据不能兼容转换,这时就需要将时间转化为UNIX时间戳,再对时间戳进行操作,这样就实现了不同数据库系统的跨平台性。
  二、时间转化为时间戳
  将用字符串表达的日期和时间转化为时间戳的形式,可以使用strtotime()函数。
  int strtotime(string $time[,int $now])
  $time是包含英语日期格式的字符串,$time值如果有毫秒数将被忽略。其值相对于$now参数给出的时间,如果没有给出则默认使用系统当前时间。
  如果给定的年份是两位数字的形式,则年份值0~69表示2000~2069,70~100表示1970~2000.
  另一个取得日期的UNIX时间戳的函数是mktime()函数,语法如下:
  int mktime([int,$hour[,int $minute[,int $second[,$int $month[,int $day[,int $year]]]]]])
  如果所有参数都为空,则默认为当前时间。
  三、获取日期和时间
  1.date()函数
  date()函数的作用是将时间戳按照给定的格式转化为具体的日期和时间字符串。
  string date(string $format[,int $timestamp])
  说明:$format指定了转化后的日期和时间的格式,$timestamp是需要转化的时间戳,如果省略则使用本地当前时间,即默认值为time()函数的值。time()函数返回当前时间的时间戳。
date()函数指出的格式代码

  
字符说明返回值例子
d月份中的第几天01~31
D星期中的第几天Mon到Sun
j月份中的第几天,没有前导零1~31
I星期几,完整的文本格式Sunday~Saturday
NISO-8601格式数字表示的星期中的第几天1(星期一)~7(星期天)
S每月天数后面的英文后缀,用2个字符表示st、nd、rd或th,可以和j一起用
w星期中的第几天,数字表示0(星期天)~6(星期六)
z年份中的第几天0~366
WISO-8601格式年份中的第几周,每周从星期一开始例如:42(当年第42周)
  
F月份,完整的文本格式,如January或MarchJanuary~December
m数字表示的月份,有前导零01~12
M三个字母缩写表示的月份Jan~Dec
n数字表示的月份,没有前导零1~12
t给定月份所应有的天数28~31
L是否为闰年如果是闰年为1,否则为0
oISO-8601格式年份数字。这和Y的值相同,只是如果ISO的星期数(W)属于前一年或下一年,则用那一年例如:1999或2003
Y4为数字完整表示的年份例如:1999或2003
y2位数字表示的年份例如:99和93
a小写的上午和下午值  am和pm
  
A大写的上午和下午值AM和PM
BSwatch Internet标准时000-999
g小时,12小时格式,没有前导零1~12
G小时,24小时格式,没有前导零0~24
h小时,12小时格式,有前导零01~12
H小时,24小时格式,有前导零00~23
i有前导零的分钟数00~59
s秒数,有前导零00~59
e时区标志例如:UTC、GMT
I是否为夏令时如果是夏令时为1,否则为0
  
O与格林尼治时间相差的小时数例如:+0200
P与格林尼治时间(GMT)的差别,小时和分钟之间用冒号分割例如:+02:00
T本机所在的时区例如:EST、MDT
Z时区偏移量的秒数。UTC西边的时区偏移量总是负的,UTC东区的时区偏移量总是正的-43200~43200
cISO8601格式的日期2004-02-12T15:19:21+00:00
rRFC822格式的日期Thu,21,Dec2000 16:01:07 +0200
U从UNIX纪元开始至今的秒数time()函数









  2.getdate()函数
  使用getdate()函数也可以获取日期和时间信息。
  array getdate([int ,$timestamp])
  说明:$timestamp是要转化的时间戳,如果不给出则使用当前时间。函数根据$timestamp返回一个包含日期和时间信息的数组。
getdate()函数返回的数组中的键名和值

  
键名说明举例
seconds秒的数字表示0~59
minutes分钟的数字表示0~59
hours小时的数字表示0~23
mday月份中第几天的数字表示1~31
wday星期中第几天的数字表示0(表示星期天)~6(表示星期六)
mon月份的数字表示1~12
year4位数字表示的完整年份例如:1993或2003
yday一年中第几天的数字表示0~365
weekday星期几的完整文本表示Sunday~Saturday
  
month月份的完整文本表示January~December
0自UNIX纪元开始至今的秒数系统相关,典型值从-2147483648~2147483647
  四、其他日期和时间函数
  1.日期和时间的计算
  由于时间戳是32位整型数据,所以通过对时间戳进行加减法运算可计算两个时间的差值。
  2.检查日期
  checkdate()函数可以用于检查一个日期数据是否有效,语法如下:
  bool checkdate(int $month,int $day,int $year)
  说明:$year的值是从1到32767,$month的值从1到12,$day的值在给定的$month值所具有的天数范围内,其中闰年的情况也考虑在内。当给定的日期是有效的日期时,函数返回TRUE,否则返回FALSE,
  3.设置时区
  系统默认的是格林尼治标准时间,所以显示当前时间可能与本地时间会有差别,PHP中提供了可以修改时区的函数date_default_timezone_set().
  bool date_default_timezone_set(string $timezone_identifier)
  参数$timezone_identifier为要指定的时区,中国大陆可用的值是Asia/Chongqing,Asia/Shanghai,Asia/Urumqi。北京时间可以使用PRC。
  另外,还可以通过修改PHP配置文件的方法修改默认时区:打开php.ini,找到date_timezone选项,将选项前面的分号“;”去掉,将选项的值设为要设置的默认时区的时区标志符。保存后重启Apache,系统默认的时区就设置完了。
  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-651816-1-1.html 上篇帖子: PHP中图像处理简介 下篇帖子: PHP5.4+内置webserver,Yii中如何隐藏index.php,让URL rewrite-11922981
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表