PHP time(),date(),mktime()日期与时间函数库
PHP时间和日期函数详解
PHP时间和⽇期函数详解PHP中所有函数都是UNIX纪元的,即从1970年1⽉1⽇开始的。
⽇期是从这个时候开始的秒数。
当⼀个函数调⽤从这时候计的秒数时,就把它当作(timestamp)时间戳。
本地时间函数1. string date(string format,inieger timestamp)该函数返回⼀个表⽰时间的字符串,是由string format 控制的。
如:<?print(date("Y年 m⽉d⽇");//输出当前,年⽉⽇.print(date("Y年 m⽉d⽇",60*60*24*365*10);//输出1980年1⽉1⽇.>也许你会问,怎麽没有timestamp呢?若timestamp为空时,或不写时,表⽰使⽤当前时间⼀刻timestamp.表⽰年份的控制符: Y---四位的年份 y---两位的年份表⽰⽉份的控制符: m---从1-12的⽉份 F---英⽂⽉份名 M---简写的⽉份名表⽰⽇号的控制符: d---前⾯有0的⽉份中⽇期 j--前⾯没有0的⽇号表⽰星期的控制符: l--英⽂星期 D--简写的星期表⽰⼩时的控制符: h--从1到12⼩时 H---从0到23的⼩时表⽰上下午的控制符 a ---am或pm A---AM或PM表⽰分钟的控制符: i---取值00-59表⽰⼀年中第多少天: z--⼀年中的第多少天2. array getdate(integer timestamp)该函数返回⼀个矩阵.如:<?$current_date=getdate();print($current_date("hours"));print($current_date("minutes");print($current_date("seconds");>说明:元素描述hours 24⼩时格式的⼩时mday ⽉份中⽇期minutes 分钟mon 数字形式的⽉份month ⽉份全称seconds 秒数wday 从0到6的数字形式的星期⼏weekday 星期⼏的名称year 年份0 时间戳即从1970年1⽉1⽇到现在的秒数yday ⼀年中数字形式的⽇期3. boolean checkdate(integer month,integer day,integer year)该函数检查⽇期是否合法.如:<?if(checkdate(2,29,1980))print("⽇期合法!n");>4. integer time()该函数获得当前时间戳.如:<?print(time());//输出⼀⼤串整数>5. integer mktime(integer hour,integer minutes,integer seconds,integer month, integer day,integer year)该函数返回给出⽇期的时间戳,即从1970年1⽉1⽇到现在的秒数.如某参数超出范围,该函数也可以解释它,如13⽉即为第⼆年的⼀⽉.如:<?$currenthour=date("H");print("50个⼩时后为:");print(date("h:i A l F dS,Y",mktime($currenthour+50)));print("<br>n");>6. string microtime()该函数返回⼀个字符串,由当前时间的毫秒数+空格+从1970年开始的秒数<?print("start:microtime()<br>n");for($index=0;$index<1000;$index++)print("good!");print("stop:microtime()<br>n");>还有,各林威治标准时间函数以上所述就是本⽂的全部内容了,希望⼤家能够喜欢。
PHP,Mysql日期和时间整理
PHP,Mysql日期和时间整理工作一年,收获了很多,慢慢做些总结,提升工作效率,工作中mysql使用的时间是一个UNIX时间戳:从1970年1月1日0点开始到当前时间的秒数,由于是int类型,很方便的适用于计算机处理,不仅仅是php和mysql的数据交互的一种格式,在各种客户端,也是数据交互的标准(android/IOS)等,因此如果只是保存和显示日期的时候,应该使用UNIX时间戳来计算日期和做为标准的日期格式。
工作中常用的流程是:将HTML页面的时间转化为时间戳保存到mysql中,从mysql中取出时间戳格式化展示在web或手机客户端。
总之mysql中保存的时间是UNIX时间戳,然后被PHP格式化为合适的时间介绍几个常用的函数1.date(),2.mktime(),3.getdate(),4.strftime()1.date()PHP中获取时间和日期使用date()函数:将时间戳或当前时间转化成格式化的字符串,例如:echo date('Y-i-s');//输出2014-3-252.mktime()使用mktime()将时间转化成UNIX时间戳$timestamp = mktime();获取当前时间戳有三种方法:mktime(),time(),date('U')mktime做时间运算mktime(12,0,0,$mon,$day+10,$year);十天以后的时间戳3.getdate()函数:$today = getdate();print_r($today);//输出Array([seconds] => 38[minutes] => 38[hours] => 22[mday] => 25[wday] => 2[mon] => 3[year] => 2014[yday] => 83[weekday] => Tuesday[month] => March[0] => 1395758318)使用checkdate()函数检验日期有效性4.strftime()格式化时间戳mysql格式化时间1.DATE_FORMAT()2.UNIX_TIMESTAMP()返回格式化成UNIX时间戳的日期,例如:SELECT UNIX_TIMESTAMP(date) FROM table,这样就可以在PHP中处理了PHP中格式化时间的函数比较少,介绍几个常用的格式化时间函数?1234567891011121314151617181920212223242526272829/**?*将timestamp时间转化为x时x分x秒?*?*/public static function getTimeLong($seconds) { ????if (!$seconds) {????????return '0秒';????}????$ret = '';????if ($seconds >= 3600) {????????$hours = (int)($seconds / 3600); ????????$seconds = $seconds % 3600; ????????if ($hours) {????????????$ret .= ($hours . '时'); ????????}????}????if ($seconds >= 60) {????????$mi = (int)($seconds / 60); ????????$seconds = $seconds % 60; ????????if ($mi) {????????????$ret .= ($mi . '分'); ????????}????}????if ($seconds) {????????$ret .= ($seconds . '秒');????}????return $ret;}?1234567891011121315161718192021222324/**?* 将相差timestamp转为如“1分钟前”,“3天前”等形式?*?* @param timestamp $ts_diff 当前时间 - 要格式化的timestamp ?*/public static function formatTime($ts_diff){????if ($ts_diff <=0)????{????????return date('Y-m-d');????}????else if ( $ts_diff <= 3600 )????{????????return max(1, (int)($ts_diff/60)) . '分钟前'; ????}????else if ( $ts_diff <= 86400 )????{????????return ((int)($ts_diff/3600)) . '小时前';????}????else????{????????return ((int)($ts_diff/86400)) . '天前';????}}?12345679101112131415161718192021222324/** 将数字星期转换成字符串星期 weekNum2String($num) ?* @param int?* @return string?*/public static function weekNum2String($num){ ????switch($num){????????case 1:????????????return '星期一';????????case 2:????????????return '星期二';????????case 3:????????????return '星期三';????????case 4:????????????return '星期四';????????case 5:????????????return '星期五';????????case 6:????????????return '星期六';????????case 7:????????????return '星期日';????????default:????????????return '未知';????}}。
php中time()和mktime()方法的区别
php中time()和mktime()⽅法的区别time()函数是返回当前时间的。
⽽mktime()函数的主要功能不是返回当前时间,⽽是格式化时间。
虽然单独写mktime()⽽不加任何参数如:echo mktime()和echo time()的效果是⼀样的。
但本质上是不⼀样的。
PHP Date / Time 函数定义和⽤法mktime() 函数返回⼀个⽇期的 Unix 时间戳。
参数总是表⽰ GMT ⽇期,因此 is_dst 对结果没有影响。
参数可以从右到左依次空着,空着的参数会被设为相应的当前 GMT 值。
语法mktime(hour,minute,second,month,day,year,is_dst)参数描述hour 可选。
规定⼩时。
minute 可选。
规定分钟。
second 可选。
规定秒。
month 可选。
规定⽤数字表⽰的⽉。
day 可选。
规定天。
year 可选。
规定年。
在某些系统上,合法值介于 1901 - 2038 之间。
不过在 PHP 5 中已经不存在这个限制了。
is_dst可选。
如果时间在⽇光节约时间(DST)期间,则设置为1,否则设置为0,若未知,则设置为-1。
⾃ 5.1.0 起,is_dst 参数被废弃。
因此应该使⽤新的时区处理特性。
提⽰和注释注释:在 PHP 5.1 之前,如果该函数的参数⾮法,则会返回 false。
例⼦mktime() 函数对于⽇期运算和验证⾮常有⽤。
它可以⾃动校正越界的输⼊:复制代码代码如下:<?phpecho(date("M-d-Y",mktime(0,0,0,12,36,2001)));echo(date("M-d-Y",mktime(0,0,0,14,1,2001)));echo(date("M-d-Y",mktime(0,0,0,1,1,2001)));echo(date("M-d-Y",mktime(0,0,0,1,1,99)));>输出:Jan-05-2002Feb-01-2002Jan-01-2001Jan-01-1999PHP time() 函数PHP Date / Time 函数time() 函数返回当前时间的 Unix 时间戳。
PHP高级教程-PHP第一章(日期和时间二)
更多日期实例
下例输出下周六的日期:
<?php $startdate = strtotime("Saturday"); $enddate = strtotime("+6 weeks",$startdate); while ($startdate < $enddate) { echo date("M d", $startdate),"<br>"; $startdate = strtotime("+1 week", $startdate); } ?>
PHP高级教程 第一章
(PHP 日期和时间二)
通过 PHP mktime() 创建日期
释义
date() 函数中可选的时间戳参数规定时间戳。如果您未规定 时间戳,将使用当前日期和时间(正如上例中那样)。 mktime() 函数返回日期的 Unix 时间戳。Unix 时间戳包含 Unix 纪元(1970 年 1 月 1 日 00:00:00 GMT)与指定时间之间的秒 数。
实例
下例输出七月四日之前的天数:
<?php $d1=strtotime("December 31"); $d2=ceil(($d1-time())/60/60/24); echo "距离十二月三十一日还有:" . $d2 ." 天。our,minute,second,month,day,year)
实例
<?php $d=mktime(9, 12, 31, 6, 10, 2015); echo "创建日期是 " . date("Y-m-d h:i:sa", $d); ?>
PHP time(),date(),mktime()区别
返回值: 字符串
函数种类: 时间日期
内容说明返回值的字符串依配置的格式来决定。若有传入时间戳记值,则将时间戳记格式化返回;若无传入时间戳记值,则将目前服务器的时间本地格式化返回。月份或者星期名称随着本地语系配置 setlocale() 的不同而改变。
%j 以数字表示当年度的第几天 (范围为 001 至 366)。
%m 月份的数字 (范围由 1 至 12)。
%M 分钟。
%p 以 'AM' 或 'PM' 表示本地端时间。
%S 秒数。
%U 数字表示为本年度的第几周,第一个星期由第一个周日开始。
%W 数字表示为本年度的第几周,第一个星期由第一个周一开始。
t - 指定月份的天数; 如: "28" 至 "31"
U - 总秒数
w - 数字型的星期几,如: "0" (星期日) 至 "6" (星期六)
Y - 年,四位数字; 如: "1999"
y - 年,二位数字; 如: "99"
z - 一年中的第几天; 如: "0" 至 "365"
其它不在上列的字符则直接列出该字符。
gmdate : 取得目前与 GMT 差后的时间。
easter_date : 计算复活节日期。
easter_days : 计算复活节与三月廿一日之间日期数。
mktime : 取得 UNIX 时间戳记。
gmmktime : 取得 UNIX 时间戳记的格林威治时间。
php选择试题及答案
php选择试题及答案PHP(Hypertext Preprocessor)是一种广泛使用的开源脚本语言,主要用于Web开发,可以嵌入HTML中,创建动态网页。
以下是一些常见的PHP选择试题及答案,供学习和参考。
题目1:PHP中,以下哪个是正确的变量声明方式?A. $varB. $varC. $var = "value";D. $var = "value";答案: A, B, C, D 都是正确的变量声明方式。
在PHP中,变量以美元符号($)开始,可以不指定初始值,也可以直接赋予值。
题目2:在PHP中,以下哪个函数可以用于获取当前脚本的文件名?A. `basename()`B. `__FILE__`C. `dirname()`D. `pathinfo()`答案: B. `__FILE__` 是一个魔术常量,它返回当前脚本的完整路径和文件名。
题目3:以下哪个是PHP中正确的数组声明方式?A. $array = array();B. $array = ["apple", "banana"];C. $array = ("apple", "banana");D. $array = array("apple" => "fruit", "carrot" =>"vegetable");答案: A, B, D 都是正确的数组声明方式。
A是使用array()函数创建一个空数组;B是使用数组字面量创建一个索引数组;D是使用关联数组的声明方式。
题目4:以下哪个PHP语句会抛出一个警告?A. `echo "Hello World!";`B. `$undefined_variable;`C. `$a = 10; echo $a;`D. `$a = 10; $b = $a / 0;`答案: B和D。
php常用函数
php常用函数PHP是一种流行的服务器端脚本语言,用于Web开发。
它具有简单易学、开源免费、跨平台等特点,被广泛应用于动态网站开发、电子商务、API开发等领域。
在PHP开发中,常用函数是开发者必须掌握的基础知识,本文将介绍PHP常用函数的分类和使用。
一、字符串函数1. strlen()函数:用于计算字符串的长度,返回字符串中字符的数量。
2. strpos()函数:用于查找字符串中的某个子串,返回子串在字符串中的位置。
3. substr()函数:用于截取字符串的一部分,可以指定起始位置和长度。
4. str_replace()函数:用于替换字符串中的某个子串,可以指定替换前后的字符串。
5. strtolower()函数:用于将字符串转换为小写字母。
6. strtoupper()函数:用于将字符串转换为大写字母。
7. trim()函数:用于去除字符串两端的空格和换行符。
8. explode()函数:用于将字符串按照指定的分隔符分割成数组。
二、数学函数1. abs()函数:用于计算一个数的绝对值。
2. rand()函数:用于生成一个随机数。
3. ceil()函数:用于向上取整。
4. floor()函数:用于向下取整。
5. round()函数:用于四舍五入。
6. max()函数:用于求多个数中的最大值。
7. min()函数:用于求多个数中的最小值。
三、数组函数1. count()函数:用于计算数组中元素的个数。
2. array_push()函数:用于向数组末尾添加一个或多个元素。
3. array_pop()函数:用于从数组末尾删除一个元素。
4. array_shift()函数:用于从数组头部删除一个元素。
5. array_unshift()函数:用于向数组头部添加一个或多个元素。
6. array_merge()函数:用于将多个数组合并成一个数组。
7. array_slice()函数:用于截取数组的一部分,可以指定起始位置和长度。
PHP时间函数使用详解
PHP时间函数使⽤详解PHP开发中,关于时间函数的使⽤基本上可以说是⽆处不在,⽽PHP中操作时间的⽅法也很多,⽐如PHP时间戳、⽇期与时间戳之间的转换、获取当前⽇期、当前时间之前或之后的时间等等,下⾯我们详细讲述⼀下PHP中各种时间函数的使⽤。
⾸先需要知道的是在php中获取时间⽅法是date(),在php中获取时间戳⽅法有time()、strtotime()。
下⾯分别说明。
date() 格式为:date($format, $timestamp),format为格式、timestamp为时间戳(可选)。
time() 返回当前时间的 Unix 时间戳,没有参数。
strtotime($time, $now) 将格式化的⽇期时间或任何英⽂⽂本的⽇期时间描述解析为 Unix 时间戳。
$time 为必填,规定要解析的时间字符串;$now ⽤来计算返回值的时间戳,如果省略该参数,则使⽤当前时间。
date($format)⽤法举例:echo date('Y-m-d');输出结果:2014-12-16echo date('Y-m-d H:i:s');输出结果:2014-12-16 23:00:00echo date('Y年m⽉d⽇');输出结果:2014年12⽉16⽇要实现输出怎样的⽇期格式其实只需要按规则修改⼀下即可,下⾯是字符串格式中各个字母的含义:a - "am" 或是 "pm"A - "AM" 或是 "PM"d - ⼏⽇,⼆位数字,若不⾜⼆位则前⾯补零; 如: "01" ⾄ "31"D - 星期⼏,三个英⽂字母; 如: "Fri"F - ⽉份,英⽂全名; 如: "January"h - 12 ⼩时制的⼩时; 如: "01" ⾄ "12"H - 24 ⼩时制的⼩时; 如: "00" ⾄ "23"g - 12 ⼩时制的⼩时,不⾜⼆位不补零; 如: "1" ⾄ 12"G - 24 ⼩时制的⼩时,不⾜⼆位不补零; 如: "0" ⾄ "23"i - 分钟; 如: "00" ⾄ "59"j - ⼏⽇,⼆位数字,若不⾜⼆位不补零; 如: "1" ⾄ "31"l - 星期⼏,英⽂全名; 如: "Friday"m - ⽉份,⼆位数字,若不⾜⼆位则在前⾯补零; 如: "01" ⾄ "12"n - ⽉份,⼆位数字,若不⾜⼆位则不补零; 如: "1" ⾄ "12"M - ⽉份,三个英⽂字母; 如: "Jan"s - 秒; 如: "00" ⾄ "59"S - 字尾加英⽂序数,⼆个英⽂字母; 如: "th","nd"t - 指定⽉份的天数; 如: "28" ⾄ "31"U - 总秒数w - 数字型的星期⼏,如: "0" (星期⽇) ⾄ "6" (星期六)Y - 年,四位数字; 如: "1999"y - 年,⼆位数字; 如: "99"z - ⼀年中的第⼏天; 如: "0" ⾄ "365"time()⽤法举例:time();输出结果:1418664250(返回的结果即当前的时间戳)strtotime($time)⽤法举例:echo strtotime('2014-12-16'); 输出结果:1418688000,作⽤其实是把2014-12-16 00:00:00转化为 UNIX 时间戳strtotime()还有个很强⼤的⽤法,参数可加⼊对于数字的操作、年⽉⽇周英⽂字符,⽰例如下:echo date('Y-m-d H:i:s',strtotime('+1 day'));输出结果:2014-12-17 23:30:33(输出明天此时的时间)echo date('Y-m-d H:i:s',strtotime('-1 day'));输出结果:2014-12-15 23:30:33(昨天此时的时间)echo date('Y-m-d H:i:s',strtotime('+1 week'));输出结果:2014-12-22 23:30:33(获取下个星期此时的时间)echo date('Y-m-d H:i:s',strtotime('next Thursday'));输出结果:2014-12-18 00:00:00(获取下个星期四凌晨的时间)echo date('Y-m-d H:i:s',strtotime('last Thursday'));输出结果:2014-12-11 00:00:00(获取上个星期四凌晨的时间)以上举例就这么多了,更多的⾃⼰去变通研究吧,strtotime()⽅法可以通过英⽂⽂本的控制Unix时间戳的显⽰,⽽得到需要的时间⽇期格式。
PHP的日期和时间
PHP的⽇期和时间Unix时间戳从 Unix 纪元(格林威治时间 1970 年 1 ⽉1⽇ 00:00:00)到当前时间的秒数 .相关函数:time() --- 函数返回⼀个当前系统的时间戳mktime( ) --- 取得⼀个⽇期的 Unix 时间戳1格式:int mktime(时[,分[,秒[,⽉[,⽇[,年[,is_dst区]]]]]]);2注意:is_dst参数表⽰是否为夏时制,PHP5.10后此参数已废除。
strtotime( ) --- 将任何英⽂⽂本的⽇期时间描述解析为 Unix 时间戳1格式:int strtotime ( string$time [, int $now ]案例://系统时间戳echo "当前系统的时间戳:".time(); //秒数//mktime -- 给⼀个年⽉⽇时分秒,返还给你⼀个时间戳,⽤的⾮常少echo "获取指定⽇期2033-2-12的时间戳:".mktime(0,0,0,2,12,2033);//strtotime() -- 如果使⽤也是⽤这个echo "获取指定⽇期2034-1-1的时间戳:".strtotime('2034-1-1');echo "获取3天前的时间戳:".strtotime('-3 day');echo "获取3天后的时间戳:".strtotime('3 day');在PHP中获取⽇期和时间getdate -- 取得⽇期/时间信息格式:array getdate ( [int timestamp] )返回⼀个根据 timestamp 得出的包含有⽇期信息的结合数组。
如果没有给出时间戳则认为是当前本地时间。
数组中的单元如下:1//getdate --- 获取⽇期/时间信息2$date = getdate();//当前⽇期信息3//$date = getdate(234456768);//获取指定时间戳的⽇期信息4echo "<pre>";//格式化输出5print_r($date);//打印时间数组date -- 格式化⼀个本地时间/⽇期格式:string date ( string format [, int timestamp] )1返回将整数 timestamp 按照给定的格式字串⽽产⽣的字符串。
php之常用函数库
php之常⽤函数库1.时间和⽇期如何获取时间戳 time()--从1970年开始计算的毫秒数echo time();⽇期echo date('Y-m-d H:i:s');获取默认是时区echo date_default_timezone_get();默认获得的时间和本地电脑时间不⼀致,需要设置相应的时区date_default_timezone_set('Asia/Shanghai'); //设置为上海的时区echo date('Y-m-d H:i:s');把时间戳转换成⽇期呈现出来echo date('Y-m-d H:i:s',time());echo '<br/>';echo date('Y-m-d H:i:s',time());2.JSON格式数据的操作JSON格式的数据数组可以嵌套(数组中包含数组)还可以包含对象(内部数据的值和名字相对应,键值对) [1,2,5,7,8,"Hello",[6,7,8],{"h","Hello"}] {"h":"Hello","w":"World",[1,2,3]}数组⽣成JSON格式的数据 encode$arr = array(1,2,5,8,"Hello","CQUT",array("h"=>"Hello","name"=>"CQUT"));echo 'array format => '.'<br/>';print_r($arr);echo '<br/>';echo 'json formate =>'.'<br/>';echo json_encode($arr);//json_encode将⼀个对象转成json格式的数据 输出 array format => Array ( [0] => 1 [1] => 2 [2] => 5 [3] => 8 [4] => Hello [5] => CQUT [6] => Array ( [h] => Hello [name] => CQUT ) ) json formate => [1,2,5,8,"Hello","CQUT",{"h":"Hello","name":"CQUT"}]对象⽣成JSON格式的数据 encode$obj = array('h'=>'Hello','w'=>'World',array(1,2,3));echo json_encode($obj); 输出 {"h":"Hello","w":"World","0":[1,2,3]}将JSON格式的数据转换成PHP对象 decode$jsonStr = '{"h":"Hello","w":"World","0":[1,2,3]}';$obj = json_decode($jsonStr);print_r($obj);echo '<br/>';echo $obj->h; 输出 stdClass Object ( [h] => Hello [w] => World [0] => Array ( [0] => 1 [1] => 2 [2] => 3 ) ) Hello。
PHP日期详细介绍
PHP⽇期详细介绍简介你可以使⽤这些函数获取运⾏ PHP 的服务器的⽇期和时间,也可以使⽤这些函数把⽇期和时间格式化成不同格式的字符串。
⽇期和时间信息在 PHP 内部是以 64 位数字存储的,它可以覆盖当前时间前后 2920 亿年的时间,这个范围之⼴,⾜以满⾜现有应⽤的实际需求。
date()函数PHP date() 函数可把时间戳格式化为可读性更好的⽇期和时间。
Tip时间戳是⼀个字符序列,表⽰⼀定的事件发⽣的⽇期/时间。
语法string date ( string$format [, int $timestamp ] )参数描述format必需。
规定时间戳的格式。
timestamp可选。
规定时间戳。
默认是当前的⽇期和时间。
PHP Date() - 格式化⽇期date() 函数的第⼀个必需参数 format 规定了如何格式化⽇期/时间。
这⾥列出了⼀些可⽤的字符:d - 代表⽉中的天 (01 - 31)m - 代表⽉ (01 - 12)Y - 代表年 (四位数)如需了解 format 参数中可⽤的所有字符列表,请查阅我们的 php-ref-date),date() 函数。
可以在字母之间插⼊其他字符,⽐如 "/"、"." 或者 "-",这样就可以增加附加格式了:<?phpecho date("Y/m/d") . "<br>";echo date("Y.m.d") . "<br>";echo date("Y-m-d");>上⾯代码的输出如下所⽰:2016/10/212016.10.212016-10-21格式字串可以识别以下 format 参数的字符串:⽇format 字符说明返回值例⼦d⽉份中的第⼏天,有前导零的 2 位数字01 到 31D星期中的第⼏天,⽂本表⽰,3 个字母Mon 到 Sunj⽉份中的第⼏天,没有前导零 1 到 31l("L"的⼩写字母)星期⼏,完整的⽂本格式Sunday 到 SaturdayN ISO-8601 格式数字表⽰的星期中的第⼏天(PHP 5.1.0 新加)1(表⽰星期⼀)到 7(表⽰星期天)S每⽉天数后⾯的英⽂后缀,2 个字符st,nd,rd 或者 th。
关于PHP函数time()date()和strtotime()的时区问题
关于PHP函数time()date()和strtotime()的时区问题最近项⽬中有个需求, 要记录新注册⽤户的次⽇登录情况, 于是写出了如下代码:$create_time = '⽤户注册时间'; //格式 Y-m-d H:i:s$time = time();$lasttime = date('Y-m-d H:i:s', $time);$current_day = floor($time / 86400);$create_day = floor( strtotime($create_time) / 86400 );$days = $current_day - $create_day;switch ($days){case 1:$values['2day'] = 1; break; //次⽇登陆case 6:$values['7day'] = 1; break; //七⽇登陆case 14:$values['15day'] = 1; break; //⼗五⽇登陆}//执⾏SQL修改数据库相关字段这段代码放到线上后, 出现了奇怪的BUG, 明明是当天注册的⽤户, 却出现了有次⽇登录的情况. 排查代码没有发现问题, 于是暂时搁置去忙其它事情. 然后在第6天时, 竟然⼜出现了有七⽇登陆的数据. 于是开始和同事正式解决这个问题, 最终发现是由于函数的时区原因导致, 具体如下:time() 返回⾃从 Unix 纪元(格林威治时间 1970 年 1 ⽉ 1 ⽇ 00:00:00)到当前时间的秒数.上⾯是 time() 函数在⼿册中的说明, 重点是格林威治时间, time() 始终返回的是格林威治时间的时间戳. 当PHP设置过时区后, date() 在格式化时间的操作中会将 (当前时区的时间 - 格林威治时间) 的偏移量⾃动添加进去, 按东⼋区的时间算也就是8⼩时. strtotime() 同样会⾃动将时区的偏移量加⼊处理操作中. 所以这时上⾯代码中 strtotime($create_time) 得到的同样是格林威治时间. $current_day 与 $create_day 现在都是按照格林威治时间计算的天数, ⽽BUG也就出现在这⾥.⽐如当前时间为 2015-02-02 07:00:00 那么格林威治时间为 2015-02-01 23:00:00 (当前时间减去8⼩时)当前时间为 2015-02-02 09:00:00 格林威治时间为 2015-02-02 01:00:00再通过 floor() 处理后, 就相当于格林威治时间的 2015-02-02 与 2015-02-01, 中间相差⼀天.所以如果⽤户在7点多注册, ⽽在9点再次登录的情况下, $current_day - $create_day = 1.测试代码如下://date_default_timezone_set('UTC'); //设置为格林威治时间date_default_timezone_set('Asia/Shanghai'); //设置为东⼋区上海时间$a = floor( strtotime('2015-02-02 07:00:00') / 86400 );$b = floor( strtotime('2015-02-02 09:00:00') / 86400 );echo$b - $a; // 结果 1//将格林威治时间打开, 注释掉上海时间, 结果输出为 0.最终解决BUG后的代码如下:$create_time = '⽤户注册时间'; //格式 Y-m-d H:i:s$time = time();$lasttime = date('Y-m-d H:i:s', $time);//时间戳总是获取的格林威治时间, strtotime()会⾃动添加当前时区的偏移量, 这⾥因时区问题导致天数计算出现⼀天的误差, 所以在处理时间戳时增加时区的偏移量$current_day = floor( ($time + date('Z')) / 86400 );$create_day = floor( (strtotime($create_time) + date('Z')) / 86400 );$days = $current_day - $create_day;switch ($days){case 1:$values['2day'] = 1; break; //次⽇登陆case 6:$values['7day'] = 1; break; //七⽇登陆case 14:$values['15day'] = 1; break; //⼗五⽇登陆}//执⾏SQL修改数据库相关字段。
MySQL中的日期和时间处理函数
MySQL中的日期和时间处理函数概述MySQL是一种常用的关系型数据库管理系统,广泛应用于Web开发和数据分析等领域。
在使用MySQL进行数据处理和查询时,经常会涉及到日期和时间的处理。
MySQL提供了一系列日期和时间处理函数,方便开发者对日期和时间进行格式转换、计算和比较等操作。
本文将介绍MySQL中常用的日期和时间处理函数,并通过实例演示其用法。
日期和时间数据类型在MySQL中,日期和时间可以作为字段的数据类型,常见的有DATE、DATETIME、TIME和TIMESTAMP。
其中,DATE表示日期(年-月-日),DATETIME表示日期和时间(年-月-日时:分:秒),TIME表示时间(时:分:秒),TIMESTAMP也表示日期和时间,但是存储的范围更广。
日期和时间的格式化当从数据库中读取日期和时间类型的数据时,有时需要将其按照自定义的格式进行显示。
MySQL提供了多种日期和时间格式化函数,最常用的是DATE_FORMAT函数。
DATE_FORMAT函数接受两个参数,第一个参数是日期或时间字段,第二个参数是所需的格式模板。
下面是几个常见的格式模板及其对应的含义:- %Y:四位数的年份- %m:两位数的月份- %d:两位数的日期- %H:两位数的小时(24小时制)- %i:两位数的分钟- %s:两位数的秒- %p:AM或PM例如,要将DATETIME类型的字段birthday格式化为"YYYY-MM-DD"的形式,可以使用以下语句:SELECT DATE_FORMAT(birthday, "%Y-%m-%d") FROM users;日期和时间的计算在应用开发中,常常需要对日期和时间进行计算,例如计算日期的差值、增减指定时间间隔等。
MySQL提供了一系列日期和时间计算的函数,包括DATEDIFF、DATE_ADD和DATE_SUB等。
1. DATEDIFF函数用于计算两个日期之间的差值,返回的是天数。
PHP常用时间函数资料整理
PHP常用时间函数资料整理
PHP常用时间函数资料整理
PHP是一种HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言。
这篇文章主要介绍了PHP常用时间函数资料整理的相关资料,需要的朋友可以参考下。
php常用的时间函数
测试环境:php5.3.29
unix时间戳(从Unix 纪元(January 1 1970 00:00:00 GMT)到给定时间的秒数。
)。
以下简称时间戳。
返回某一时间的时间戳。
time();
获取当前本机时间的时间戳。
mktime(时,分,秒,月,日,年);
//从右向左可以省略,省略到的参数用本机时间替换,比如省略了最后日和年就应用当前时间 22日 2016年。
//年可写两位或四位数字。
两位时0-69 对应于 2000-2069,70-100 对应于 1970-2000。
四位时测试有效范围1970年到2037年。
date('Y-m-d H:i', $time);
//将参数2的时间戳,按参数1的格式获得字符串。
这是我最常用的格式:2016-08-22 09:02
//参数1支持的字母值还有很多,比如:s(有前导零的'秒)、M(三个字母缩写的月份)、y(两位数的年份)、T(本机所在的时区)等等去手册查吧。
getdate($时间戳);
//以数组返回一个unix时间戳的,默认值当前本地时间,返回值格式如下:。
PHP中date与gmdate的区别及默认时区设置
PHP中date与gmdate的区别及默认时区设置PHP时间函数中有两个格式化函数:date()和gmdate(),在官⽅的⽂档中的描述为:复制代码代码如下:date() #— 格式化⼀个本地时间/⽇期gmdate() #— 格式化⼀个 GMT/UTC ⽇期/时间,返回的是格林威治标准时(GMT)。
先来举个例⼦,我们现在所在的时区是+8,那么服务器运⾏以下脚本返回的时间应该是这样的:当前时间假定是2013-03-14 12:15:27复制代码代码如下:echo date('Y-m-d H:i:s'); #与date('Y-m-d H:i:s' time());等效,输出为:2007-03-14 12:15:27echo gmdate('Y-m-d H:i:s'); #与gmdate('Y-m-d H:i:s' time());输出为:2007-03-14 04:15:27但是这只是在Linux+Apache下运⾏PHP所得的结果,如果在Windows下运⾏,则2个函数返回都是:2013-03-14 04:15:27。
所以,我们应该给⼀个兼容性的写法,统⼀使⽤gmdate,并⼿⼯设置当前时区,写法改进如下:复制代码代码如下:echo gmdate('Y-m-d H:i:s', time() + 3600 * 8);这样不管在Linux+Apache下还是Windows下都得到了正确的结果,当然这样写还有⼀个好处,当⽹站是⾯向全世界的时候,那么⽹站⽤户只要设置所在的时区,程序⾃动根据⽤户设置的时区进⾏时间计算,数据库中信息发布时间只存当前的time()所⽣成的时间,那么在中国+8时区看到的发布时间是:2007-03-14 12:15:27,那么在欧洲+2时区⽤户看到这个信息的发布时间是:2007-03-14 06:15:27,这样信息的时间就全部对应正确了。
php时间time与日期date之间的使用详解及区别
php时间time与⽇期date之间的使⽤详解及区别
php时间time与⽇期date之间的使⽤区别
1、time()函数
PHP中的time()函数,使⽤echo输出来看是⼀个很长的整数,⾥⾯包含了⽇期和时间,是计算后的⼀个值。
如果要得到Y-m-d H:i:s这样的⽇期格式,那么可以使⽤date⽅法:
date('Y-m-d H:i:s', time());
echo输出它即可得到:2016-1-5 10:20:11
2、⽇期格式与字符串
我们⾃⼰可以构建⼀个⽇期格式的字符串,如:2015-1-1 10:20:11。
可以使⽤strtotime()函数,将这个字符串转换成⼀个time 格式的值。
如:
$time1 = strtotime('2016-1-5 10:20:11');
这个值echo输出,得到⼀个长整数。
所以,可以这样理解:
1. ⽇期在php中保存为⼀个长整形数字中。
它可以通过date函数转换成⽇期(估且叫date)类型,date类型可以直接输出字
符串。
2. ⽇期字符串可以使⽤strtotime()函数,转换为time格式(即长整数)。
3. ⽇期格式,可以通过int强制类型转换,转换成长整数。
感谢阅读,希望能帮助到⼤家,谢谢⼤家对本站的⽀持!。
PHP日期时间处理
PHP⽇期时间处理概述PHP中对⽇期进⾏处理常⽤的⼏个函数如下:date(): 把时间戳格式化为更易读的⽇期和时间time(): 获取当前 Unix 时间戳strtotime(): 将表⽰时间和⽇期的字符串转化为相应的时间戳mktime(): 创建⽇期这些函数是PHP核⼼的部分,⽆需安装即可使⽤。
另外需要注意的是,这些函数的⾏为还受到 php.ini 中配置的时区等的影响。
名称描述默认PHP 版本date.timezone默认时区(所有的 Date/Time 函数使⽤该选项)""PHP 5.1date.default_latitude默认纬度(date_sunrise() 和 date_sunset() 使⽤该选项)"31.7667"PHP 5.0date.default_longitude默认经度(date_sunrise() 和 date_sunset() 使⽤该选项)"35.2333"PHP 5.0date.sunrise_zenith默认⽇出天顶(date_sunrise() 和 date_sunset() 使⽤该选项)"90.83"PHP 5.0date.sunset_zenith默认⽇落天顶(date_sunrise() 和 date_sunset() 使⽤该选项)"90.83"PHP 5.0date() 函数详细介绍data() 函数的语法如下:string date ( string $format [, int $timestamp ] )format : 必需,规定输出⽇期字符串的格式timestamp : 可选,规定整数的 Unix 时间戳。
默认是当前的本地时间 time()返回值是格式化后的时间字符串<?php// 假定今天是:March 10th, 2001, 5:16:18 pm$today = date("Y-m-d H:i:s"); // 2001-03-10 17:16:18 (MySQL DATETIME 格式)$today = date("F j, Y, g:i a"); // March 10, 2001, 5:16 pm$today = date("m.d.y"); // 03.10.01$today = date("j, n, Y"); // 10, 3, 2001$today = date("Ymd"); // 20010310$today = date('h-i-s, j-m-y, it is w Day z '); // 05-16-17, 10-03-01, 1631 1618 6 Fripm01$today = date('\i\t \i\s \t\h\e jS \d\a\y.'); // It is the 10th day.$today = date("D M j G:i:s T Y"); // Sat Mar 10 15:16:08 MST 2001$today = date('H:m:s \m \i\s\ \m\o\n\t\h'); // 17:03:17 m is month$today = date("H:i:s"); // 17:16:17date('Y'); // 当前年份date('m'); // 当前⽉份date('d'); // 当前是⼏号strtotime() 函数详细介绍strtotime() 函数语法如下:int strtotime ( string $time [, int $now = time() ] )time : ⽇期/时间字符串now : ⽤来计算返回值的时间戳本函数预期接受⼀个包含美国英语⽇期格式的字符串并尝试将其解析为 Unix 时间戳,其值相对于 now 参数给出的时间,如果没有提供此参数则⽤系统当前时间成功则返回时间戳,否则返回 FALSE,在 PHP 5.1.0 之前本函数在失败时返回 -1<?phpecho strtotime("now"), "\n"; // 现在时间戳echo strtotime("10 September 2000"), "\n"; // 2000年10⽉现在时间戳echo strtotime("+1 day"), "\n"; // 距离现在⼀天后的时间戳echo strtotime("-3 day"), "\n"; // 距离现在三天前的时间戳echo strtotime("+1 week"), "\n"; // 距离现在⼀周后的时间戳echo strtotime("-1 month"), "\n";// 距离现在⼀个⽉前的时间戳echo strtotime("+1 year"), "\n"; // 距离现在⼀年后的时间戳echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n"; // 距离现在1周2天4⼩时2秒后的时间戳echo strtotime("next Thursday"), "\n"; // 下个星期三echo strtotime("last Monday"), "\n"; // 本⽉的最后⼀个星期⼀mktime() 函数详细介绍mktime() 函数语法如下:int mktime ([ int $hour = date("H") [, int $minute = date("i") [, int $second = date("s") [, int $month = date("n") [, int $day = date("j") [, int $year = date("Y") [, int $is_dst = -1 ]]]]]]] )参数可以从右向左省略,任何省略的参数会被设置成本地⽇期和时间的当前值hour : ⼩时数minute : 分钟数second : 秒数(⼀分钟之内)month : ⽉份数day : 天数year : 年份数is_dst : 本参数可以设为 1,表⽰正处于夏时制时间(DST),0 表⽰不是夏时制,或者 -1(默认值)表⽰不知道是否是夏时制任何给定⽉份的最后⼀天都可以被表⽰为下个⽉的第 "0" 天,⽽不是 -1 天如果参数⾮法,本函数返回 FALSE (在 PHP 5.1 之前返回 -1)<?php$lastday = mktime(0, 0, 0, 3, 0, 2000);echo strftime("Last day in Feb 2000 is: %d", $lastday);$lastday = mktime(0, 0, 0, 4, -31, 2000);echo strftime("Last day in Feb 2000 is: %d", $lastday);>其他⼀些常⽤函数time() 获取当前Unix秒数时间戳,还可以使⽤ microtime() 获取当前 Unix 时间戳和微秒数,这个函数经常⽤来计算脚本运⾏的耗时mixed microtime ([ bool $get_as_float ] )如果调⽤时不带可选参数,本函数以 "msec sec" 的格式返回⼀个字符串,其中 sec 是⾃ Unix 纪元(0:00:00 January 1, 1970 GMT)起到现在的秒数,msec 是微秒部分。
php 时间函数
PHP 时间函数是 PHP 编程中的一个重要的概念。
它可以帮助我们更好地处理时间数据,从而提高程序的性能和效率。
PHP 时间函数主要用于处理日期和时间,比如获取当前日期和时间、比较两个日期之间的差异、格式化日期时间等等。
PHP 提供了大量的内置函数来实现这些功能,比如 date()、time()、strtotime() 等等。
date() 函数是最常用的时间函数,它可以获取当前日期和时间,也可以格式化日期时间,输出指定格式的时间字符串,比如将时间戳格式化为标准的日期格式。
time() 函数可以获取当前服务器的 Unix 时间戳,用来表示当前的时间。
它也可以用来比较两个时间戳之间的差异,比如计算某个时间段内的秒数。
strtotime() 函数可以将字符串类型的日期转换为 Unix 时间戳,可以更方便地处理日期时间。
getdate() 函数可以将时间戳转换为日期格式,返回一个包含当前时间信息的数组,比如星期几、月份等。
mktime() 函数可以根据指定的日期和时间信息,计算出对应的 Unix 时间戳,可以用来计算指定日期的时间戳,或者计算两个日期之间的差异。
总之,PHP 时间函数提供了丰富的支持,可以更方便地处理日期时间数据,可以大大提高程序的性能和效率。
MySQL中时间与日期处理的函数介绍
MySQL中时间与日期处理的函数介绍在数据库管理系统中,时间和日期是非常常见的数据类型。
而在MySQL数据库中,有许多内置函数可以用于处理时间和日期,包括获取当前时间、日期格式化、时间计算、时间比较等等。
本文将介绍一些常用的MySQL时间与日期处理函数,帮助读者更好地处理和管理时间与日期数据。
1. CURDATE()和CURTIME()CURDATE()函数用于获取当前日期,格式为'YYYY-MM-DD',其中YYYY表示年份,MM表示月份,DD表示日期。
而CURTIME()函数则用于获取当前时间,格式为'HH:MM:SS',其中HH表示小时,MM表示分钟,SS表示秒数。
2. NOW()和SYSDATE()NOW()函数和SYSDATE()函数都可以用于获取当前日期和时间,包括年、月、日、小时、分钟和秒数。
它们的返回值格式为'YYYY-MM-DD HH:MM:SS'。
3. DATE_FORMAT()DATE_FORMAT()函数用于将日期按照指定的格式进行格式化。
例如,要将日期格式化为'YYYY年MM月DD日'的形式,可以使用以下语句:SELECT DATE_FORMAT(NOW(), '%Y年%m月%d日');其中,'%Y'表示年份的四位数形式,'%m'表示月份的两位数形式,'%d'表示日期的两位数形式。
4. DATE_ADD()和DATE_SUB()DATE_ADD()函数和DATE_SUB()函数可以用于进行日期的加法和减法运算。
例如,要将某个日期加上10天,可以使用以下语句:SELECT DATE_ADD('2021-01-01', INTERVAL 10 DAY);而要将某个日期减去5个月,可以使用以下语句:SELECT DATE_SUB('2021-01-01', INTERVAL 5 MONTH);其中,'2021-01-01'是待操作的日期,INTERVAL表示间隔,10和5分别表示需要加上或减去的天数或月数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
S - 字尾加英文序数,二个英文字母; 如: "th","nd"
t - 指定月份的天数; 如: "28" 至 "31"
U - 总秒数
w - 数字型的星期几,如: "0" (星期日) 至 "6" (星期六)
Y - 年,四位数字; 如: "1999"
y - 年,二位数字; 如: "99"
语法: string gmdate(string format, int timestamp);
返回值: 字符串
函数种类: 时间日期
内容说明 本函数与 date() 函数相似,不同的是本函数返回与格林威治标准时间 (Greenwich Mean Time, GMT) 时间差后的时间
内容说明: 输入某一年份,则以 UNIX 时间戳记的格式返回该年的复活节日期,若没有输入年份,则计算当年的日期。值的?注意的是输入的年份必需在公元 1970 至 2037 年之间,否则无法计算。
使用范例
<?
echo date("M-d-Y", easter_date(1999));
使用范例
<?php
echo date( "M d Y H:i:s",mktime(0,0,0,1,1,1998) );
echo gmdate( "M d Y H:i:s",mktime(0,0,0,1,1,1芬兰 (Finland, GMT +0200),返回的结果为:
a - "am" 或是 "pm"
A - "AM" 或是 "PM"
d - 几日,二位数字,若不足二位则前面补零; 如: "01" 至 "31"
D - 星期几,三个英文字母; 如: "Fri"
F - 月份,英文全名; 如: "January"
h - 12 小时制的小时; 如: "01" 至 "12"
语法: array gettimeofday(void);
返回值: 数组
函数种类: 时间日期
内容说明 返回数组的元素包括下列的项目:
"sec" - 秒
"usec" - 百万分之一秒
"minuteswest" - 格林威治时间的分
"dsttime" - 目的的时区
gmdate 取得目前与 GMT 差后的时间。
返回的字符串可以依下列的格式而定:
%a 星期几的缩写。
%A 星期几的全名。
%b 月份名称的缩写。
%B 月份名称的全名。
%c 本地端日期时间较佳表示字符串。
%d 用数字表示本月的第几天 (范围为 00 至 31)。
%H 用 24 小时制数字表示小时数 (范围为 00 至 23)。
PHP :time(),date(),mktime()日期与时间函数库{经常会忘却掉}
checkdate : 验证日期的正确性。
date : 将服务器的时间格式化。
strftime : 将服务器的时间本地格式化。
getdate : 获得时间及日期信息。
gettimeofday : 取得目前时间。
gmdate : 取得目前与 GMT 差后的时间。
easter_date : 计算复活节日期。
easter_days : 计算复活节与三月廿一日之间日期数。
mktime : 取得 UNIX 时间戳记。
gmmktime : 取得 UNIX 时间戳记的格林威治时间。
time : 取得目前时间的 UNIX 时间戳记。
microtime : 取得目前时间的 UNIX 时间戳记的百万分之一秒值。
checkdate 验证日期的正确性。
语法: int checkdate(int month, int day, int year);
返回值: 整数
函数种类: 时间日期
内容说明 若日期是有效的则返回 true,若日期有问题,则返回 false。本函数可以用来检查日期是否有效。有效范围如下:
"wday" - 当周的第几天数字
"mon" - 月份数字
"year" - 年,数字
"yday" - 当年的第几天数字; 如: "299"
"weekday" - 星期几全名; 如: "Friday"
"month" - 月份全名; 如: "January"
gettimeofday 取得目前时间。
setlocale ("LC_TIME", "fr");
print(strftime("%A and in German "));
setlocale ("LC_TIME", "de");
print(strftime("%A.n"));
?>
参考 setlocale() mktime()
返回值: 整数
函数种类: 时间日期
内容说明: 输入一个时间,则返回 UNIX 的格林威治时间戳记的长整数。
time 取得目前时间的 UNIX 时间戳记。
语法: int time(void);
返回值: 整数
函数种类: 时间日期
内容说明 返回目前时间的戳记值。
参考 date()
getdate 获得时间及日期信息。
语法: array getdate(int timestamp);
返回值: 数组
函数种类: 时间日期
内容说明 返回数组的元素包括下列的项目:
"seconds" - 秒
"minutes" - 分
"hours" - 时
"mday" - 当月的第几天
%% % 字符。
使用范例
<?php
setlocale ("LC_TIME", "C");
print(strftime("%A in Finnish is "));
setlocale ("LC_TIME", "fi");
print(strftime("%A, in French "));
?>
范例二:
<?
$tomorrow = mktime(0,0,0,date("m") ,date("d")+1,date("Y"));
$lastmonth = mktime(0,0,0,date("m")-1,date("d"), date("Y"));
$nextyear = mktime(0,0,0,date("m"), date("d", date("Y")+1);
echo date("M-d-Y", easter_date(2000));
echo date("M-d-Y", easter_date(2001));
?>
返回结果为
Apr-04-1999
Apr-23-2000
Apr-15-2001
easter_days 计算复活节与三月廿一日之间日期数。
年 为 0 至 32767 年
月 为 1 至 12 月
日 则随着月份及闰年变化
date 将服务器的时间格式化。
语法: string date(string format, int [timestamp]);
返回值: 字符串
函数种类: 时间日期
内容说明返回值的?字符串依配置的格式来决定。若有传入时间戳记值,则将时间戳记格式化返回;若无传入时间戳记值,则将目前服务器的时间格式化返回。要将日期转为其它的语系格式,应使用setlocale() 及 strftime() 二个函数。字符串格式化的选项如下:
z - 一年中的第几天; 如: "0" 至 "365"
其它不在上列的字符则直接列出该字符。
使用范例,范例一:
<?
print(date( "l dS of F Y h:i:s A" ));
print("July 1, 2000 is on a " . date("l", mktime(0,0,0,7,1,2000)));
使用范例
<?
echo easter_days(1999);
echo easter_days(1492);
echo easter_days(1913);
?>
返回结果为:
14 (4/4)
32 (4/22)
2 (3/23)
参考 easter_date()
mktime 取得 UNIX 时间戳记。
语法: int easter_days(int [year]);