1. 시간대 설정 방법:
php5 이후에는 php.ini 설정을 수정하거나 코드에서 수정하여 시간대를 직접 설정해야 합니다.
PHP.INI에 시간대 설정
date.timezone = PRC
코드에 시간대 설정
1 date_default_timezone_set('Asia/Shanghai');//'Asia/Shanghai' Asia/Shanghai
2 date_default_timezone_set('Asia/Chongqing');//여기서 Asia/Chongqing'은 "아시아/충칭"
3 date_default_timezone_set('PRC');//여기서 PRC는 "중화인민공화국"
4 ini_set('date.timezone','Etc/GMT-8');
5 ini_set('date.timezone','PRC');
6 ini_set('date.timezone',' Asia /Shanghai');
7 ini_set('date.timezone','Asia/Chongqing');
checkdate: 날짜가 올바른지 확인합니다.
bool checkdate ( int $month
, int $day
, int $year
)$month
, int $day
, int $year
)
month 的值是从 1 到 12,Day
的值在给定的 month
所应该具有的天数范围之内,闰年已经考虑进去了;year 的值是从 1 到 32767。
date: 将服务器的时间格式化。
string date ( string $format [, int $timestamp ] ):返回将整数 timestamp
按照给定的格式字串而产生的字符串。如果没有给出时间戳则使用本地当前时间。换句话说,timestamp
是可选的,默认值为 time()。
date("Y-m-d H:i:s", strtotime("-1 days")) //昨天此刻的时间,明天则是 "1 days",前天则是"-2 days";
date("Y-m-d H:i:s", strtotime("0 days")) //今天此刻的时间,等价于date("Y-m-d H:i:s")
U 替换成从一个起始时间(好象是1970年1月1日)以来的秒数
Y 替换成4位的年号.
y 替换成2位的年号.
F 替换成月份的英文全称.
M 替换成月份的英文简称.
m 替换成月份数.
z 替换成从当年1月1日以来的天数.
d 替换成日数.
l 替换成星期几的英文全称.
D 替换成星期几的英文简称.
w 替换成星期几(数字).
H 替换成小时数(24小时制).
h 替换成小时数(12小时制).
i 替换成分钟数.
s 替换成秒数.
A 替换成"AM"或"PM".
a 替换成"am"或"pm".
S 替换成序数字后缀,例如:"st","nd","rd","th".
time: 取得目前时间的 UNIX 时间戳记。
int time ( void )返回自从 Unix 纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间的秒数。
$nextWeek = time() + (7 * 24 * 60 * 60); // 7 days; 24 hours; 60 mins; 60secs echo 'Now: '. date('Y-m-d H:i:s') ."\n"; echo 'Next Week: '. date('Y-m-d H:i:s', $nextWeek) ."\n"; // or using strtotime(): echo 'Next Week: '. date('Y-m-d H:i:s', strtotime('+1 week')) ."\n"; echo 'Previous Week: '. date('Y-m-d H:i:s', strtotime('-1 week')) ."\n";//或者用strtotime('-7 day')
mktime: 取得 UNIX 时间戳记。
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 ]]]]]]] )根据给出的参数返回 Unix 时间戳。时间戳是一个长整数,包含了从 Unix 纪元(January 1 1970 00:00:00 GMT)到给定时间的秒数。如果参数非法,本函数返回 FALSE
(在 PHP 5.1 之前返回 -1)。
$lastday = mktime(0, 0, 0, 3, 0, 2000);//括号里的参数分别表示 时分秒月天年 echo strftime("Last day in Feb 2000 is: %d", $lastday)."<br>"; $lastday = mktime(0, 0, 0, 4, -31, 2000); echo strftime("Last day in Feb 2000 is: %d", $lastday);
输出:
Last day in Feb 2000 is: 29 Last day in Feb 2000 is: 29
getdate: 获得时间及日期信息。
array getdate ([ int $timestamp
= time() ] )
$today = getdate();
var_dump($today);
输出:
array (size=11) 'seconds' => int 27 'minutes' => int 44 'hours' => int 8 'mday' => int 4 'wday' => int 3 'mon' => int 11 'year' => int 2015 'yday' => int 307 'weekday' => string 'Wednesday' (length=9) 'month' => string 'November' (length=8) 0 => int 1446597867
microtime: 取得目前时间的 UNIX 时间戳记的百万分之一秒值。
mixed microtime ([ bool $get_as_float
월
의 일 범위 내에 있습니다. 연도 값은 1부터 32767까지입니다. string date ( string $format [, int $timestamp ] ): 주어진 형식 문자열에 따라 정수 timestamp
로 생성된 문자열을 반환합니다. 타임스탬프가 제공되지 않으면 현지 현재 시간이 사용됩니다. 즉, timestamp
는 선택사항이며 기본값은 time()입니다. function microtime_float() { list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } $time_start = microtime_float(); // Sleep for a while usleep(10000000);//usleep — 以指定的微秒数延迟执行,10000000是10秒,sleep是延迟多少秒 $time_end = microtime_float(); $time = $time_end - $time_start; echo "Did nothing in $time seconds\n";//Did nothing in 9.9999949932098 seconds
$nowdate="1999-08-05" ; $aa=getdate($nowdate); $year=$aa['year']; $month=$aa['mon']; echo $year."</br>"; echo $month;U는 시작 시간(예: 1970년 1월 1일) 이후의 초 수로 대체됩니다.
Y는 4자리 연도 숫자로 대체되고 y는 2자리 연도 숫자로 대체됩니다.
F는 다음과 같습니다.M 해당 월의 영문 약어로 대체 m 월 수로 대체 z 해당 연도 1월 1일 이후의 일수로 대체
dl 요일의 영문명으로 대체 Full name.
D 요일의 영문 약어로 대체.w 요일(숫자)로 대체.H 대체 h 시간(12시간 형식)으로 바꿉니다.
i 분으로 바꿉니다.🎜s는 초로 바꿉니다.🎜A는 "AM" 또는 "로 바꿉니다. PM".🎜a는 "am" 또는 "pm"으로 대체됩니다.🎜S는 서수 접미사로 대체됩니다(예: "st", "nd ","rd","th").🎜🎜time: UNIX 가져오기 현재 시간의 타임스탬프입니다. 🎜🎜int time(void)은 Unix epoch(1970년 1월 1일 00:00:00 GMT)부터 현재 시간까지의 초 수를 반환합니다. 🎜$nowdate="1999-08-05" ; $aa=strtotime($nowdate); $year=date("Y",$aa); $month=date("n",$aa); echo $year."</br>"; echo $month;🎜mktime: UNIX 타임스탬프를 가져옵니다. 🎜🎜int mktime ([ int
$hour
= date("H") [, int $ Minute
= date("i") [, int $second
= 날짜("s") [, int$month
= date("n") [, int $day
= date("j") [ , int $year
= date("Y") [, int $is_dst
= -1 ]]]]]]] )는 주어진 매개변수에 따라 Unix 타임스탬프를 반환합니다. . 타임스탬프는 Unix 시대(1970년 1월 1일 00:00:00 GMT)부터 지정된 시간까지의 초 수를 포함하는 긴 정수입니다. 매개변수가 잘못된 경우 이 함수는 🎜FALSE
🎜를 반환합니다(PHP 5.1 이전에는 -1 반환). 🎜$endtime="2004-09-09 18:10:00"; $d1=substr($endtime,17,2); //秒 $d2=substr($endtime,14,2); //分 $d3=substr($endtime,11,2); // 时 $d4=substr($endtime,8,2); //日 $d5=substr($endtime,5,2); //月 $d6=substr($endtime,0,4); //年 echo $d1.'-'.$d2.'-'.$d3.'-'.$d5.'-'.$d4.'-'.$d6."<br>"; echo date("Y-m-d H:i:s")."<br>"; $now_T=mktime(date("H"),date("i"),date("s"),date("m"),date("d"),date("Y")); echo "此时的time".$now_T."<br>"; $now_S=mktime("$d3","$d2","$d1","$d5","$d4","$d6"); echo "2004-09-09 18:10:00时的time".$now_S."<br>"; $end_TS=($now_T-$now_S)/60; //计算 剩余分钟 echo "相差".$end_TS."分";🎜출력: 🎜🎜
00-10-18-09-09-2004 2015-11-04 09:02:08 此时的time1446598928 2004-09-09 18:10:00时的time1094724600 相差5864572.1333333分🎜🎜🎜🎜getdate: 시간 및 날짜 정보를 가져옵니다. 🎜🎜array getdate ([ int
$timestamp
= time() ] )🎜🎜$today = getdate();🎜mysql日期时间函数 http://www.jb51.net/article/23966.htm🎜출력: 🎜rrreee🎜microtime: 현재 시간의 UNIX 타임스탬프 가져오기 값 1만분의 1초. 🎜🎜mixed microtime ([ bool
$get_as_float
] ) $get_as_float 매개변수가 주어지고 해당 값이 TRUE와 동일하면 이 함수는 부동 소수점 숫자를 반환합니다. 🎜rrreee🎜strftime: 서버 시간을 로컬에서 형식화합니다. http://php.net/manual/zh/function.strftime.php 🎜🎜🎜gettimeofday🎜: 현재 시간을 가져옵니다. http://php.net/manual/zh/function.gettimeofday.php🎜🎜gmdate: 현재 시간과 GMT 사이의 시차를 가져옵니다. 🎜🎜🎜easter_date🎜: 부활절 날짜를 계산합니다. 🎜🎜🎜easter_days🎜: 부활절부터 3월 21일까지의 일수를 계산합니다. 🎜🎜gmmktime: UNIX 타임스탬프의 그리니치 표준시를 가져옵니다. 🎜🎜🎜3. 보충: 🎜🎜$_SERVER['REQUEST_TIME'] 是 PHP 内置的当前页面开始运行时的时间戳,在当前页面运行结束时将 time() - $_SERVER['REQUEST_TIME'] 得到的就是当前页面运行的时间(秒):
一天86400秒
一周 86400*7=604800秒
set_time_limit用法:set_time_limit(秒数);规定从该句运行时起程序必须在指定秒数内运行结束, 超时则程序出错退出.
一个问题举例
$nowdate="1999-08-05" ; $aa=getdate($nowdate); $year=$aa['year']; $month=$aa['mon']; echo $year."</br>"; echo $month;
为何得到:
1970
1
我希望得到:
1999
8
如何解决?
--------------------------------------------------------------------------------
$nowdate="1999-08-05" ; $aa=strtotime($nowdate); $year=date("Y",$aa); $month=date("n",$aa); echo $year."</br>"; echo $month;
--------------------------------------------------------------------------------
$endtime="2004-09-09 18:10:00"; $d1=substr($endtime,17,2); //秒 $d2=substr($endtime,14,2); //分 $d3=substr($endtime,11,2); // 时 $d4=substr($endtime,8,2); //日 $d5=substr($endtime,5,2); //月 $d6=substr($endtime,0,4); //年 echo $d1.'-'.$d2.'-'.$d3.'-'.$d5.'-'.$d4.'-'.$d6."<br>"; echo date("Y-m-d H:i:s")."<br>"; $now_T=mktime(date("H"),date("i"),date("s"),date("m"),date("d"),date("Y")); echo "此时的time".$now_T."<br>"; $now_S=mktime("$d3","$d2","$d1","$d5","$d4","$d6"); echo "2004-09-09 18:10:00时的time".$now_S."<br>"; $end_TS=($now_T-$now_S)/60; //计算 剩余分钟 echo "相差".$end_TS."分";
输出
00-10-18-09-09-2004 2015-11-04 09:02:08 此时的time1446598928 2004-09-09 18:10:00时的time1094724600 相差5864572.1333333分
常用时间函数封装:
/**
* 将秒数转换为时间(年、天、小时、分、秒)
* @param int $time 秒数比如86400
* @return bool|string
*/
public static function Sec2Time($time)
{
if (is_numeric($time)) {
$value = array(
"years" => 0, "days" => 0, "hours" => 0,
"minutes" => 0, "seconds" => 0,
);
if ($time >= 31556926) {
$value["years"] = floor($time / 31556926);
$time = ($time % 31556926);
}
if ($time >= 86400) {
$value["days"] = floor($time / 86400);
$time = ($time % 86400);
}
if ($time >= 3600) {
$value["hours"] = floor($time / 3600);
$time = ($time % 3600);
}
if ($time >= 60) {
$value["minutes"] = floor($time / 60);
$time = ($time % 60);
}
$value["seconds"] = floor($time);
$t = $value["years"] . "年" . $value["days"] . "天" . " " . $value["hours"] . "小时" . $value["minutes"] . "分" . $value["seconds"] . "秒";
return $t;
} else {
return (bool)FALSE;
}
}
/**
*当前日期是本月的第几周
* @param int $date Y-m-d格式的时间,下同
* @return int
* /
function weekOfMonth($date) {
$firstOfMonth = strtotime(date("Y-m-01", strtotime ($date)));
return intval(date("W", $date)) - intval(date("W", $firstOfMonth)) + 1;
}
//获取指定日期所在月的第一天和最后一天
function GetTheMonth($date)
{
$firstday = date("Y-m-01", strtotime($date));
$lastday = date("Y-m-d", strtotime("$firstday +1 month -1 day"));
return array($firstday, $lastday);
}
//PHP获得指定日期所在星期的第一天和最后一天
function getdays($date )
{
$lastday = date('Y-m-d', strtotime("$day Sunday"));
$firstday = date('Y-m-d', strtotime("$lastday -6 days"));
return array($firstday, $lastday);
}
/**
* 获得指定日期的前/后$step(正负表示指定日期所在月的前后的第几个月份)个月的第一天和最后一天日期
* @param $date
* @param $step
* @return string
*/
function AssignTabMonth($date, $step)
{
$date = date("Y-m-d", strtotime($step . " months", strtotime($date)));//得到处理后的日期(得到前后月份的日期)
$firstday = date("Y-m-01", strtotime($date));
$lastday = date("Y-m-d", strtotime("$firstday +1 month -1 day"));
return array($firstday, $lastday);
}
$date = date('Ymd', strtotime($date));
$lastday = date('Ymd', strtotime("$date Sunday"));//周日
$firstday = date('Ymd', strtotime("$lastday -6 days"));//周一
$firstday = date('Ymd', strtotime(date('Y-m-01', strtotime($date))));//指定日期所在月的第一天
$lastday = date("Ymd", strtotime("$firstday +1 month -1 day"));//指定日期所在月的最后一天
$dayCount = $lastday - $firstday + 1; //间隔天数
mysql日期时间函数 http://www.jb51.net/article/23966.htm
위 내용은 일반적인 PHP 시간 함수 사용법 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!