|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
怎么培养啊 别光说不练啊,好 ,比如新人入门自己步是配置环境,虽然现在都有很多的集成环境,但是真实的体验下配置环境还是会有很多帮助,不论是你以后工作还是在真实的linux下开发。 复制代码 代码以下:
<?php echo time();
echo mktime(11,25,0,9,5,2010);//和time一样的
echo microtime();
echo mktime(0,0,0,1,1,1970);
?>
这外面输入分离是1283657290、1283657100、0.88533200 1283657290、-25200。从最初一个值看,咱们晓得这里前往的工夫戳是经由了时区调剂的,也就是我在中国的1970年1月1日0点,格林尼治还没有到0点呢,因而这里的工夫会是正数且整好等于-8*3600。
再看
复制代码 代码以下:
<?php
echo date ("H i l d F" ,1283657100);
echo gmdate("H i l d F",1283657100);
echo strftime("%Hh%M %A %d %b" ,1283657100);
//strftime()任务的体例和date()没有甚么分歧,除特别格局化字符的后面必需添加一个百分号%。
echo strtotime("2010-9-5 11:25:00");
var_dump(getdate (time()));
?>
这里的输入是11 25 Sunday 05 September、03 25 Sunday 05 September、11h25 Sunday 05 Sep、1283657100、array(11) {
["seconds"]=>
int(9)
["minutes"]=>
int(39)
["hours"]=>
int(11)
["mday"]=>
int(5)
["wday"]=>
int(0)
["mon"]=>
int(9)
["year"]=>
int(2010)
["yday"]=>
int(247)
["weekday"]=>
string(6) "Sunday"
["month"]=>
string(9) "September"
[0]=>
int(1283657949)
}
次要看第三个输入,这里输入的是在中国的2010年9月5日11点25分的时分 格林尼治的工夫是几何。这里也要计入时差的。并且这里还有一个很奇奥的就是只要gmdate没有收回正告,其他的都有正告说不克不及依附于体系的时区。想象也是,由于gmdate算出来的只是格林尼治的工夫,就算是体系时区错了,一加一减就又正常了。
复制代码 代码以下:
//工夫格局化
function sgmdate($dateformat, $timestamp='', $format=0) {
global $_SCONFIG, $_SGLOBAL;
if(empty($timestamp)) {
$timestamp = $_SGLOBAL['timestamp'];
}
$timeoffset = strlen($_SGLOBAL['member']['timeoffset'])>0?intval($_SGLOBAL['member']['timeoffset']):intval($_SCONFIG['timeoffset']);
$result = '';
if($format) {
$time = $_SGLOBAL['timestamp'] - $timestamp;
if($time > 24*3600) {
$result = gmdate($dateformat, $timestamp + $timeoffset * 3600);
} elseif ($time > 3600) {
$result = intval($time/3600).lang('hour').lang('before');
} elseif ($time > 60) {
$result = intval($time/60).lang('minute').lang('before');
} elseif ($time > 0) {
$result = $time.lang('second').lang('before');
} else {
$result = lang('now');
}
} else {
$result = gmdate($dateformat, $timestamp + $timeoffset * 3600);
}
return $result;
}
咱们直接看if($format){}里的器材,起首求得体系以后工夫和我传出去的工夫(通常为数据库里的工夫,如2010-9-4 21:00:00)的差。假如工夫差是在一天之内,则直接得出结论好比两小时前,假如是大于1天,则挪用gmdate。这里我就是很弄不懂的。为何要挪用这个诡异的函数,而不是直接date($timestamp)呢?这他妈的究竟是甚么意思阿?
gmdate
When run in Finland (GMT +0200), the first line below prints "Jan 01 1998 00:00:00", while the second prints "Dec 31 1997 22:00:00".
复制代码 代码以下:
<?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, 1998));
?>
也就是说gmdate是思索过了时差的。这里会输入尺度的工夫格局,而不是几天前。
接上去侧重看uchome的function_common里的函数
复制代码 代码以下:
//字符串工夫化
function sstrtotime($string) {
global $_SGLOBAL, $_SCONFIG;
$time = '';
if($string) {
$time = strtotime($string);
if(gmdate('H:i', $_SGLOBAL['timestamp'] + $_SCONFIG['timeoffset'] * 3600) != date('H:i', $_SGLOBAL['timestamp'])) {
$time = $time - $_SCONFIG['timeoffset'] * 3600;
}
}
return $time;
}
别看这个函数很少,然而看得我很费劲。这里是要把一个工夫字符串转换为工夫戳。好比我这里输出的是2010 9 4 21:08,则$time的值就是这个工夫到January 1 1970 00:00:00 GMT的工夫差,这里是要思索甚么时差的。$_SGLOBAL[''timestamp]的值其实和$time一样的办法算出来的,然而数值能够有渺小的不同。$_SCONFIG['timeoffset']是在config的谁人内外面的,今朝其值为8。这里有一种情形是体系的时区是对的,或是不合错误的,需求经由过程$_SCONFIG['timeoffset']来查验。gmdate将传入的工夫戳(运转法式的中央的工夫戳)经由体系的时区来失掉此时格林尼治谁人中央的工夫。假如是体系时区设对了,那末这个正好一加一减,和前面的相等了(其实这里$_SGLOBAL[''timestamp]的数值是可有可无的)。假如是正常的,那末就不需求改$time,假如是不正常的,那末需求减一下。然而仍是那句话,这他妈的究竟是甚么意思阿?在学习中,我也一直这样要求着自己。 |
|