UNIX时间戳及日期的转换与计算
UNIX时间戳是保存日期和时间的一种紧凑简洁的方法,是大多数UNIX系统中保存当前日期和时间的一种方法,也是在大多数计算机语言中表示日期和时间的一种标准格式。以32位整数表示格林威治标准时间,例如,使用证书11230499325表示当前时间的时间戳。UNIX时间戳是从1970年1月1日零点(UTC/GMT的午夜)开始起到当前时间所经过的秒数。1970年1月1日零点作为所有日期计算的基础,这个日期通常成为UNIX纪元。
将日期和时间转变成UNIX时间戳
在PHP中,如果需要将日期和时间转变成UNIX时间戳,可以调用mktime()函数。该函数的原型如下所示:
int mktime([int hour [,int minute[,int second[,int month[,int day[int year]]]]]])
该函数中所有参数都是可选的,如果参数为空,默认将当前时间转变成UNIX时间戳。这样,和直接调用time()函数获取当前的UNIX时间戳功能相同。参数也可以从右向左省略,任何省略的参数会被设置成本地日期和时间的当前值。如果只想转变日期,对具体的时间不在乎,可以将前三个转变时间的参数都设置为0.mktime()函数对于日期运算和验证非常有用,它可以自动校政越界的输入。如下所示:
1
2
3
4
5
6
|
<?php
echo date ( "Y-m-d" , mktime (0,0,0,12,36,2008)). "\n" ; //日期超过31天,计算后输出 2009-01-05
echo date ( "Y-m-d" , mktime (0,0,0,14,1,2010)). "\n" ; //月份超过12月,计算后输出2011-02-01
echo date ( "Y-m-d" , mktime (0,0,0,1,1,2012)). "\n" ; //没有问题的转变,输出结果2012-01-01
echo date ( "Y-m-d" , mktime (0,0,0,1,1,99)). "\n" ; //会将99年转变为1999年, 1990-01-01
?>
|
如果有需要将任何英文文本的日期时间描述直接解析为UNIX时间戳,可以使用strtotime()函数,该函数的圆形如下所示:
int strtotime(string time[,int now])
函数strtotime()可以用英语的自然语言创建讴歌时刻的时间戳,接受一个包含美国英语日期格式的字符串并尝试将其解析为UNIX时间戳(自January 1 1970 00:00:00 GMT起的描述),其值相对于now参数给出的时间,如果没有提供次参数则用系统当前时间。该函数执行成功则返回时间戳,否则返回FALSE。和mktime()的对比如下所示:
1
2
3
4
5
6
|
<?php
echo date ( "Y-m-d" , strtotime ( "now" )); //输出现在的时间戳
echo date ( "Y-m-d" , strtotime ( "8 may 2012" )); //输出2012-05-08
echo date ( "Y-m-d" , strtotime ( "+1 day" )); //输出现在的日期加1天
echo date ( "Y-m-d" , strtotime ( "last monday" )); //输出2012-04-02
?>
|
下例通过使用strtotime()函数编写一个纪念日的倒计时程序,来介绍一下该函数在项目开发中的实际应用,示例代码如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
<?php
$now = strtotime ( "now" ); //当前时间
$endtime = strtotime ( "2014-08-18 08:08:08" ); //设定毕业时间,转成时间戳
$second = $endtime - $now ; //获取毕业时间到现在时间的时间戳(秒数)
$year = floor ( $second /3600/24/365); //从这个时间戳中换算出年头数
$temp = $second - $year *365*24*3600; //从这个时间戳中去掉整年的秒数,就剩下月份的秒数
$month = floor ( $temp /3600/24/30); //从这个时间戳中共换算出月数
$temp = $temp - $month *30*3600*24; //从时间戳中去掉整月的秒数,就剩下天的描述
$day = floor ( $temp /24/3600); //从这个时间戳中换算出剩余的天数
$temp = $temp - $day *3600*24; //从这个时间戳中去掉整天的秒数,就剩下小时的秒数
$hour = floor ( $temp /3600); //从这个时间戳中换算出剩余的小时数
$temp = $temp - $hour *3600; //从时间戳中去掉小时的秒数,就剩下分的秒数
$minute = floor ( $temp /60); //从这个时间戳中换算出剩余的分数
$second1 = $temp - $minute *60; //最后只有剩余的秒数了
echo "距离培训毕业还有($year)年($month)月($day)天($hour)小时($minute)分($second1)秒。" ;
?>
|
注意:如果给定的年份是两位数字的格式,则其值0-69表示2000-2069,70-100表示1970-2000。
日期的计算
在PHP中,计算两个日期之间相隔的长度,最简单的方法就是通过计算两个UNIX时间戳之差来获得。例如,在PHP脚本中接收来自HTML表单用户提交的出生日期,计算这个用户的年龄。如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
|
<?php
//从表单中接收用户提交的出生日期中的年份、月份、天
$year = 1981;
$month = 11;
$day = 05;
$birthday = mktime (0,0,0, $month , $day , $year ); //将出生日期转变为UNIX时间戳
$nowdate = time(); //调用time()函数获取当前时间的UNIX时间戳
$ageunix = $nowdate - $birthday ; //两个时间戳相减获取用户年龄的UNIX时间戳
$age = floor ( $ageunix /3600/24/365); //将UNIX时间戳除以一年的秒数获取用户的年龄
echo "年龄:$age" ;
?>
|
在以上的脚本中,调用mktime()函数将从用户出生日期转变为UNIX时间戳,再调用time()函数获取当前时间的UNIX时间戳。因为这个日期的格式都是使用整数表示的,所以可以将他们相减。又将计算后获取的UNIX时间戳除以一年的秒数,将UNIX时间戳转变为以年度量的单位。
>> 本文固定链接: http://php.ncong.com/php_course/date/unixdate.html
>> 转载请注明: 恩聪php 2014年08月07日 于 恩聪PHP学习教程 发表
转载于:https://www.cnblogs.com/ncong/p/3909796.html
UNIX时间戳及日期的转换与计算相关推荐
- php时间戳 剩余日期时间_PHP中UNIX时间戳和日期间的转换与计算实例
UNIX时间戳是保存日期和时间的一种紧凑简洁的方法,是大多数UNIX系统中保存当前日期和时间的一种方法,也是在大多数计算机语言中表示日期和时间的一种标准格式.以32位整数表示格林威治标准时间,例如,使 ...
- php循环语句时间戳转换,php 时间戳与日期的转换(转载)
UNIX时间戳和格式化日期是我们常打交道的两个时间表示形式. a:Unix时间戳存储.处理方便,但是不直观 b:格式化日期直观,但是处理起来不如Unix时间戳那么自如 [关于两者的互相转换] 日 期 ...
- datetime unix php,PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】...
本文实例讲述了PHP基于DateTime类解决Unix时间戳与日期互转问题.分享给大家供大家参考,具体如下: 这个问题主要在32位的系统下出现,64位的不存在这样的问题.php 5.2+提供了Date ...
- php中UNIX时间戳转换为日期
1. UNIX时间戳转换为日期用函数: date() 一般形式:date('Y-m-d H:i:s', 1156219870); 2. 日期转换为UNIX时间戳用函数:strtotime() 一般形式 ...
- UNIX时间戳与日期的相互转换
mysql中UNIX时间戳与日期的相互转换 UNIX时间戳转换为日期用函数:FROM_UNIXTIME() select FROM_UNIXTIME(1410318106); 日期转换为UNIX时间戳 ...
- mysql UNIX时间戳与日期的相互转换
UNIX时间戳转换为日期用函数FROM_UNIXTIME() select FROM_UNIXTIME(1156219870); 日期转换为UNIX时间戳用函数UNIX_TIMES*****P() S ...
- python时间函数详解_Python 日期的转换及计算的具体使用详解
日期的转换及计算 对于日期,有时需执行不同时间单位的转换,或者接受字符串格式的日期,转换为 datetime 对象.有时需计算日期的范围,以及特定某个星期几的日期.这里更多用到的是 Python 提供 ...
- JS时间戳、日期互相转换
JS时间戳.日期互相转换 欢迎使用JS时间戳.日期互相转换 获取当前系统时间戳: 将时间戳转换成日期格式: 将日期格式转换成时间戳: 欢迎使用JS时间戳.日期互相转换 开头问候语:PHP 是世界上最好 ...
- Java时间戳与日期格式转换工具类
Java时间戳与日期格式转换工具类 在做web开发时,有时候需要用到时间戳,在前台进行日期转换,从数据库中取出来是日期格式的,这里记录下使用的转换工具类(这些都是静态方法,通过类名.方法的形式即可调用 ...
最新文章
- module ‘pytest‘ has no attribute ‘allure‘问题解决
- 2017-2018-2 20179216 《网络攻防与实践》 第四周总结
- error LNK2019解决办法
- C语言sprintf函数(发送格式化输出到 str 所指向的字符串)(format 标签属性)(字符串拼接)(数字转字符串、浮点数转字符串)
- 【Linux系统编程】进程间通信--无名管道(pipe)
- IO流--buffer
- ural 1066 uva 1555
- os.path的使用
- Linux文件浏览命令
- django传递临时数据
- 第二十五章 合作博弈论【相关策略与相关均衡】
- 【学习】人工智能:一种现代的方法
- avod论文理解与代码解读
- docker 网络模式之 macvlan模式
- 车站计算机系统的简称,AFC计算机系统.ppt
- js锅打灰太狼小游戏
- 计算机ps cs2考试,photoshop cs2试题汇编素材(中级考试题目答案和素材)
- 阿里云ACA、ACP、ACE认证考试常见问题
- 新安装的MySQL,在installer界面start Server无法连接成功
- 利用logic friday 把分组密码Present的S盒转化成布尔函数(转载)