PHP获取系统当前时间date函数.txt偶尔要回头看看,否则永远都在追寻,而不知道自己失去了什么。
男人掏钱是恋人关系,女人掏钱是夫妻关系,男女抢着掏钱是朋友关系。
男人爱用眼睛看女人,最易受美貌迷惑;女人爱用心看男人,最易受伤心折磨。
使用函式 date() 实现显示的格式: 年-月-日小时:分钟:秒相关时间参数: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"可以自由设定显示的内容,连接符号或是显示位置,例如date("m-d H") 或者date("dmY");?>等php中的日期处理加入时间:2004-12-18 17:35:22 大小:12 KB 阅读次数:1405PHP中的日期处理转贴:xiaxia 日期:2004-05-26 人气:9我正打算用PHP编写一种帮助处理系统。
我发现我必须知道处理完最后一位客户的问题后已经过去了多长时间?当我过去用ASP时解决这个问题相当简单,ASP有相应的函数 DateDiff 可以给出两个日期间间隔多少月、多少天和多少秒。
当我搜寻完PHP手册后我发现PHP并没有类似的函数。
本文包含以下内容:1、得到目前的日期和时间-我们有多少种方式?2、改变日期显示的方式-日期和时间的显示形式3、转换现在的日期为Unix的时间戳值4、改变日期a. 增加时间b. 减去时间c. 找出两日期之间的间隔5、为PHP添加DateAdd函数6、为PHP添加DateDiff函数**得到目前的日期和时间在 Unix中,时间的表示方式为计算从1970年1月1日零时起所过去的秒数,这称为UNIX 时间戳(Unix Epoch)。
如果我们有这样一段的代码:?echo time();?将返回值958905820而此时的时间为2000年5月 21日12时43分。
你也许会说这相当不错。
当这对我毫无帮助,或者只有一点帮助。
在PHP中,对日期处理的函数都必须用到由time()返回的时间戳值。
同时,由于PHP在Unix和Windows系统中均使用同样的时间戳值,这就允许你不需要修改代码即可在不同的系统间移植。
另外的一个好处是time()函数返回的是一个整数,你可以将其作为整数字段或文本字段存入数据库,而不必使用特别的日期/时间字段。
你已经基本了解了 Unix的时间戳值,现在让我们来展示它的实际用途。
改变日期显示的方式-日期和时间的显示形式PHP提供两个办法来将Unix的时间戳值转换成为有用的数据。
第一个是date()函数。
这个函数有两个参数-第一个字符串用于设定你所希望返回的格式,第二个为Unix 的时间戳值。
格式化字符串通过一些简单的特殊格式化字符来显示你所希望看到的格式的日期和时间。
假设你希望日期以这样的格式显示“18h01 Sunday 21 May”。
我们需要对字符串中的每一部分使用一个特殊格式化字符,你可以从PHP手册中日期和时间函数库中找到。
这样的特殊格式化字符数量不少,他们所表示的类似于星期几、月的英文名、用2位或4位数表示的年份,是否是上午(AM)或下午(PM)以及其他。
对于这个例子我们需要的特殊字符为:‘H’-24 小时制的小时‘i’-分钟‘l’-星期几的英文全名‘d’-本月的第几日‘F’-月份的英文全名因此我们的格式化字符串为”Hhi l d F”, PHP代码为:?echo date ("Hhi l d F" ,time());?当我们执行这段代码,我们发现我们所得到的结果为:180609 Sunday 21 May这样的结果看起来有些奇怪。
让我们再查一下PHP手册,原来’h’所代表的是12 小时制的小时数。
这再次证明了一句真理:“计算机只做你所告诉它该做的,而不是你想要它做的”。
我们有两个选择。
第一个是在h前使用转义字符“”:echo date ("Hhi l d F", time());我们得到这样的结果:18h12 Sunday 21 May这正是我们所要的。
但如果我们在一个十分复杂的句子中需要包含日期和时间,我们是否需要对每个字符使用转义字符?答案当然是不。
我们使用另一个函数strftime()。
strftime()有两个好处。
第一个好处我们并不在本文讨论范围内-如果你使用setlocale()函数,你可以通过strftime得到相应语言的月份的名称。
另外的一个好处是你可以将特别的日期和时间的格式化字符包含在你的字符串中。
这同时也意味着无论你是否要学习date()函数的所有特殊格式化字符,你都必须学习一整套完全不同的格式化字符。
strftime()工作的方式和date()没有什么不同,除了特殊格式化字符的前面必须添加一个百分号%。
如果用strftime()函数,前面例子的代码如下:?echo strftime ("%Hh%M %A %d %b" ,time());?结果为:18h24 Sunday 21 May这也许看起来将简化繁,但考虑一下如果你所需要的显示的为"Today is Sunday 21 May 2000. The time is somewhere close to 18h24." 我想使用date()函数无疑令人感到厌烦。
在开始的时候,我提及我们有两种方式可以从Unix时间戳值中得到有用的数据。
我们刚刚了解了date()和strftime()。
另一个getdate()。
这个函数只需要 Unix 的时间戳值作为参数,而函数的返回值为日期和时间的数组。
下面是一个例子:?$date_time_array = getdate (time());echo $date_time_array[ "weekday"];?返回的结果为:Sunday除了"weekday",该数组的其他部分为:"seconds" –秒"minutes" –分"hours" –小时“mday" - 本月的第几天"wday" -本周的第几天(数字)"mon" -月(数字)"year" –年"yday" - r本年的第几天(数字)"month" -月份全名我们现在可以得到容易辨认的日期和时间。
那么其他呢?**转换现在的日期为Unix的时间戳值通常你必须处理一些日期或时间格式的数据。
打开M$的一个Access数据库,所有的日期都以YYYY/MM/DD的格式存储,加入目前的日前即为2000/05/27。
Mktime()函数可以将一个时间转换成Unix的时间戳值。
函数的格式为:int mktime(int hour, int minute, int second, int month, int day, int year, int [is_dst] );从左往右你必须提供小时、分、秒、月、天和年。
最后一个参数用于指定你是否处于夏令时,此参数是可选的,所以我们将忽略它。
代码如下:?echo mktime (0, 0,0 ,5, 27,2000 );?由于不知道小时、分和秒同时这些参数必须填写,我将其设置为0。
设置为0意味着时间为午夜。
?$access_date = "2000/05/27";//explode() 函数用一个字符串作为分界来分解另一个字符串。
这个例子$access_date通过字符串”/”来分解$date_elements = explode("/" ,$access_date);// 此时// $date_elements[0] = 2000// $date_elements[1] = 5// $date_elements[2] = 27echo mktime (0, 0,0 ,$date_elements [1], $date_elements[ 2],$date_elements [0]); ?我们看一个比从Access数据库单纯获得日期更复杂的情况,我们得到一个以下格式的日期和时间:2000/05/27 02:40:21 PM?// 来自Access的字符串$date_time_string = "2000/05/27 02:40:21 PM";// 将字符串分解成3部分-日期、时间和上午/下午$dt_elements = explode(" " ,$date_time_string);// 分解日期$date_elements = explode("/" ,$dt_elements[ 0]);// 分解时间$time_elements = explode(":" ,$dt_elements[ 1]);// 如果是下午,我们将时间增加12小时以便得到24小时制的时间if ($dt_elements [2]== "PM") { $time_elements[ 0]+=12;}// 输出结果echo mktime ($time_elements [0], $time_elements[ 1], $time_elements[ 2], $date_elements[1], $date_elements[2], $date_elements[0]);?** 修改日期有时我们需要知道6小时以后是什么时间,35天前的日期或者从你最后一次玩Quake3后已过去多少秒。