php时间戳 剩余日期时间_PHP中UNIX时间戳和日期间的转换与计算实例
UNIX时间戳是保存日期和时间的一种紧凑简洁的方法,是大多数UNIX系统中保存当前日期和时间的一种方法,也是在大多数计算机语言中表示日期和时间的一种标准格式。以32位整数表示格林威治标准时间,例如,使用证书11230499325表示当前时间的时间戳。UNIX时间戳是从1970年1月1日零点(UTC/GMT的午夜)开始起到当前时间所经过的秒数。1970年1月1日零点作为所有日期计算的基础,这个日期通常成为UNIX纪元。
因为UNIX时间戳是一个32位的数字格式,所以特别适用于计算机处理,例如计算两个时间点之间相差的天数。另外,由于文化和地区的差异,存在不同的时间格式,以及时区的问题。所以UNIX时间戳也是根据一个时区进行标准化而设计的一种通用格式,并且这种格式可以很容易地转换为任何格式。也因为UNIX时间戳是一个32位的证书表示的,所以在处理1902年以前或2038年以后的事件将会遇到一些问题。另外,在Windows下,由于时间戳不能为负数,所以使用PHP中提供的时间戳函数处理1970年之前的日期,就会发生错误。要使PHP代码具有可移植性,必须记住这一点。
将日期和时间转变成UNIX时间戳
在PHP中,如果需要将日期和时间转变成UNIX时间戳,可以调用mktime()函数。该函数的原型如下所示:
int mktime([int hour [,int minute[,int second[,int month[,int day[int year]]]]]])
该函数中所有参数都是可选的,如果参数为空,默认将当前时间转变成UNIX时间戳。这样,和直接调用time()函数获取当前的UNIX时间戳功能相同。参数也可以从右向左省略,任何省略的参数会被设置成本地日期和时间的当前值。如果只想转变日期,对具体的时间不在乎,可以将前三个转变时间的参数都设置为0.mktime()函数对于日期运算和验证非常有用,它可以自动校政越界的输入。如下所示:
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()的对比如下所示:
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()函数编写一个纪念日的倒计时程序,来介绍一下该函数在项目开发中的实际应用,示例代码如下所示:
$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表单用户提交的出生日期,计算这个用户的年龄。如下所示:
//从表单中接收用户提交的出生日期中的年份、月份、天
$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时间戳转变为以年度量的单位。
PS:这里再为大家推荐一个本站Unix时间戳转换工具,附带了各种语言下Unix时间戳的操作方法:
php时间戳 剩余日期时间_PHP中UNIX时间戳和日期间的转换与计算实例相关推荐
- php时间戳基础知识点,php日期和时间基础知识--Unix时间戳
/*1.取得当前的Unix时间戳 UNIX 时间戳(英文叫做:timestamp)是 PHP 中关于时间与日期的一个很重要的概念,它表示从 1970年1月1日 00:00:00 到当前时间的秒数之和. ...
- Python中timestamp时间戳和日期时间的转换
文章目录 将timestamp转换为时间 将时间转换为timestamp 总结 附录 将timestamp转换为时间 我们可以用time模块获取当前的时间戳 >>> import t ...
- c语言 北京时间转换utc时间_mysql之unix时间戳和正常时间格式之间的转换
转载:https://www.cnblogs.com/longzhongren/p/4596278.html 函数:FROM_UNIXTIME 作用:将MYSQL中以INT(11)存储的时间以&quo ...
- MySql 格式化时间(包括正常时间格式与unix时间戳的互相转换)
函数:FROM_UNIXTIME 作用:将MYSQL中以INT(11)存储的时间以"YYYY-MM-DD"格式来显示. 语法:FROM_UNIXTIME(unix_timestam ...
- JS获取当前时间戳与时间戳转日期时间格式
一.获取当前时间的时间戳(三种方式) const t1 = new Date().valueOf() // 第一种,推荐 const t2 = new Date().getTime() // 第二种, ...
- js 时间戳与日期时间的相互转换
js 时间戳与日期时间的相互转换 时间戳:指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总毫秒数. 1.获取时间戳 1)获取当前时 ...
- DateTime时间格式转换为Unix时间戳格式
// DateTime时间格式转换为Unix时间戳格式 public int ConvertDateTimeInt(System.DateTime time) { System.DateTime st ...
- 将10位或13位时间戳转换为日期+时间--yyyy-MM-dd HH:mm:ss
将10位或13位时间戳转换为日期+时间–yyyy-MM-dd HH:mm:ss public static void main(String[] args) {// 10位 秒时间戳 转换String ...
- 日期时间转时间戳以及时间戳转日期时间
直接给出两个函数,第一个函数是将日期时间类型的列表转为时间戳类型的列表,第二个则是将时间戳类型的列表转为日期时间类型的列表. 日期时间转时间戳 def datetime_to_timestamp(se ...
最新文章
- Forefront Client Security服务器配置
- 小程序开发总结一:mpvue框架及与小程序原生的混搭开发
- 第四期 | 带学斯坦福CS224n自然语言处理课+带打全球Kaggle比赛(文末重金招募老师!)...
- innoDB 存储引擎
- Java中的Fork / Join框架的简要概述
- World Wind Java开发之十——AnalyticSurface栅格渲染(转)
- 猎户星空否认停发高管薪资:无论遭遇怎样困难 都不会苛扣员工薪酬
- 面经——小马智行2022秋招嵌入式
- 反向传播网络(BP 网络)
- 使用FileZilla搭建简单的FTP
- 利用MATLAB生成软件二阶低通滤波器(绝对靠谱)
- 工行网银支付浏览器兼容问题小记
- 榛子云——短信(工具)
- python爬取王者皮肤_Python爬虫入门(1):手把手教你获取王者荣耀全皮肤高清壁纸...
- java audio 分帧_语音特征参数MFCC提取过程详解
- 关于0x80070091 目录不是空的
- mail 使用QQ邮箱
- python基本数据类型1
- 建模师一个月的真实工资是多少
- 管理者树立威信,牢记这“6字诀”!