>백엔드 개발 >PHP 튜토리얼 >PHP 날짜 함수 및 PHP 시간 함수

PHP 날짜 함수 및 PHP 시간 함수

不言
不言원래의
2018-06-02 09:28:453044검색

이 글은 주로 PHP 날짜 함수와 PHP 시간 함수를 소개하는데, 이는 특정 참조 값을 가지고 있습니다. 이제 모든 사람과 공유합니다. 도움이 필요한 친구들이 참조할 수 있습니다

1:
checkdate() 함수는 날짜를 확인합니다.
checkdate(월,일,년)
지정된 값이 유효하면 이 함수는 true를 반환하고, 그렇지 않으면 false를 반환합니다.
날짜는 다음과 같은 경우에 적합합니다.
월은 1 - 12 사이입니다.
일 값은 윤년을 고려하여 특정 월의 일수 범위 내에 있습니다.
1~32767 사이의 연도
예 1:

<?php
var_dump(checkdate(12,31,2000));//var_dump函数显示表达式的类型与值
var_dump(checkdate(2,29,2003));
var_dump(checkdate(2,29,2004));
?>
显示:
bool(true)
bool(false)
bool(true)
例子2:
<?php
if (checkdate(12,31,2009))
{
echo "a";
}
else
{
echo "b";
}
?>

표시:

a

date_default_timezone_set() 함수는 스크립트의 모든 날짜/시간 함수에 사용되는 기본 시간대를 설정합니다.
date_default_timezone_set(timezone)
시간대가 필요합니다. "UTC" 또는 "유럽/파리"와 같은 시간대 식별자입니다.
적법한 시간대 목록: http://www.php.net/manual/en/timezones.php
Example

<?php
echo(date_default_timezone_set("Europe/Paris"));
?>

shows:

1


date_default_timezone_get() 이 함수는 모든 날짜 및 시간 함수를 반환합니다. 스크립트에서 사용할 기본 시간대입니다.
date_default_timezone_get(void)
void 선택 사항

<?php
echo(date_default_timezone_get());
?>

Display:

Asia/Shanghai

Four:
time() 이 함수는 현재 시간의 Unix 타임스탬프를 반환합니다.
Unix epoch(1970년 1월 1일 00:00:00 GMT) 이후 현재 시간까지의 초 수를 반환합니다.
PHP 5.1부터는 요청이 시작된 시간의 타임스탬프가 $_SERVER['REQUEST_TIME']에 저장됩니다.
예:

<?php
$t=time();
echo($t . "<br />");
echo(date("D F d Y",$t));
?>
1138618081//这是总秒数
Mon January 30 2006

Five:
date() 함수는 현지 시간/날짜 형식을 지정합니다.
gmdate() 함수는 GMT/UTC 날짜/시간 형식을 지정합니다. 반환된 시간이 그리니치 표준시(GMT)라는 점을 제외하면 date() 함수와 유사합니다.
date(format,timestamp)
format은 결과를 반환하는 방법을 지정해야 합니다
a - "am" 또는 "pm"
A - "AM" 또는 "PM"
d - 일, 두 자리, 두 자리 미만인 경우 그런 다음 앞에 0을 추가하세요. 예: "01" ~ "31"
D - 요일, "Fri"
F - 월, 전체 영어 이름: "January"
h - 12시간 형식의 시간: "01" ~ "12"
H - 24시간 형식의 시간: "00" ~ "23"
g - 12시간 형식의 시간, 0은 없습니다. 두 자리 미만에 추가됨: "1 "~12"
G - 24시간 형식의 시간, 두 자리 미만에는 0이 추가되지 않습니다. 예: "0"~"23"
i - 분 ; 예: "00" ~ "59"
j - 일, 2자리가 2자리 미만인 경우 0을 추가하지 마세요. 예: "1" ~ "31"
l - 요일, 전체 영어 이름; 예: "Friday"
m - 월, 두 자리, 두 자리 미만인 경우 앞에 0을 추가합니다. 예: "01" ~ "12"
n - 월, 두 자리, 경우 두 자리 미만인 경우 0이 추가되지 않습니다. 예: "1" ~ "12"
M - 월, 세 개의 영문자 예: "Jan"
s - 초: "00" "59"
S - 단어 끝에 영어 서수를 추가합니다(예: "th", "nd"
t - 월의 일 수 지정: "28"). ~ "31"
U - 총 초
w - 요일(예: "0"(일요일) ~ "6"(토요일)
Y - 연도, 4자리 숫자: "1999"
y) - 연도, 두 자리 숫자: "99"
z - 연도: "0" ~ "365"
예:

<?php
echo("date()的例子:<br />");
echo(date("l") . "<br />");//l - 星期几,英文全名; 如: "Friday" 
echo(date("l dS \of F Y h:i:s A") . "<br />");//l星期 d日期S英文序数\of显示of,F Y 月份年,A上下午
echo("Oct 3,1975 was on a ".date("l", mktime(0,0,0,10,3,1975))."<br />");
echo(date(DATE_RFC822) . "<br />");
echo(date(DATE_ATOM,mktime(0,0,0,10,3,1975)) . "<br /><br />");
echo("gmdate()格林威治标准时的例子:<br />");
echo(gmdate("l") . "<br />");
echo(gmdate("l dS \of F Y h:i:s A") . "<br />");
echo("Oct 3,1975 was on a ".gmdate("l", mktime(0,0,0,10,3,1975))."<br />");
echo(gmdate(DATE_RFC822) . "<br />");
echo(gmdate(DATE_ATOM,mktime(0,0,0,10,3,1975)) . "<br />");
?>

:

date() 예:

Tuesday
Tuesday 23rd of June 2009 01:26:19 PM
Oct 3,1975 was on a Friday
Tue, 23 Jun 09 13:26:19 +0800
1975-10-03T00:00:00+08:00

gmdate() 그리니치 표준시 예:


Tuesday
Tuesday 23rd of June 2009 05:26:19 AM
Oct 3,1975 was on a Thursday
Tue, 23 Jun 09 05:26:19 +0000
1975-10-02T16:00:00+00:00

六:
getdate() 函数取得日期/时间信息。
getdate(timestamp)
timestamp可选 规定UNIX时间格式中的时间,没有则为当前时间
他返回一个根据 timestamp 得出的包含有日期信息的结合数组。如果没有给出时间戳,则认为是当前本地时间。

数组中的单元如下:
"seconds" 秒的数字表示 0 到 59
"minutes" 分钟的数字表示 0 到 59
"hours" 小时的数字表示 0 到 23
"mday" 月份中第几天的数字表示 1 到 31
"wday" 星期中第几天的数字表示 0(表示星期天)到 6(表示星期六)
"mon" 月份的数字表示 1 到 12
"year" 4 位数字表示的完整年份 例如:1999 或 2003
"yday" 一年中第几天的数字表示 0 到 365
"weekday" 星期几的完整文本表示 Sunday 到 Saturday
"month" 月份的完整文本表示 January 到 December
0 自从 Unix 纪元开始至今的秒数,和 time() 的返回值以及用于 date() 的值类似。 系统相关,典型值为从 -2147483648 到 2147483647。
例子:

<?php
print_r(getdate());
?>

显示:

Array
(
[seconds] => 45
[minutes] => 52
[hours] => 14
[mday] => 24
[wday] => 2
[mon] => 1
[year] => 2006
[yday] => 23
[weekday] => Tuesday
[month] => January
[0] => 1138110765
)

例子2:

<?php
$my_t=getdate(date("U"));
print("$my_t[weekday], $my_t[month] $my_t[mday], $my_t[year]");
?>

显示:

Wednesday, January 25, 2006

七:
gettimeofday() 函数返回一个包含当前时间信息的数组。
所返回的数组键的含义是:
"sec" - 自 Unix 纪元起的秒数
"usec" - 微秒数
"minuteswest" - 格林威治向西的分钟数
"dsttime" - 夏令时修正的类型
gettimeofday(return_float)
return_float 可选。当其设置为 TRUE 时,gettimeofday() 会返回一个浮点数。
例子1

<?php
echo(gettimeofday(true) . "<br /><br />");
print_r(gettimeofday());
?>

显示:

1138111447.4
Array
(
[sec] => 1138111447
[usec] => 395863
[minuteswest] => -60
[dsttime] => 0
)

例子2:

<?php
$my_t=gettimeofday();
print("$my_t[sec].$my_t[usec]");
?>

显示:

1138197006.988273

八:
mktime() 函数返回一个日期的 Unix 时间戳。
gmmktime() 函数取得 GMT 日期的 UNIX 时间戳。与 mktime() 类似,不同的是返回值是格林威治标准时的时间戳。
           参数总是表示 GMT 日期,因此 is_dst 对结果没有影响。与 mktime() 一样,参数可以从右到左依次空着,空着的参数会被设为

          相应的当前 GMT 值。
mktime(hour,minute,second,month,day,year,is_dst)
参数可以从右到左依次空着,空着的参数会被设为相应的当前 格林威治GMT 值。
hour 可选。规定小时。
minute 可选。规定分钟。
second 可选。规定秒。
month 可选。规定用数字表示的月。
day 可选。规定天。
year 可选。规定年。在某些系统上,合法值介于 1901 - 2038 之间。不过在 PHP 5 中已经不存在这个限制了。
is_dst 可选。如果时间在日光节约时间(DST)期间,则设置为1,否则设置为0,若未知,则设置为-1。
自 5.1.0 起,is_dst 参数被废弃。因此应该使用新的时区处理特性。
例子
mktime() 函数对于日期运算和验证非常有用。它可以自动校正越界的输入:

<?php
echo(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-2002
Feb-01-2002
Jan-01-2001
Jan-01-1999

九:
strftime() 函数根据区域设置格式化本地时间/日期。
gmstrftime() 函数根据本地区域设置格式化 GMT/UTC 时间/日期。与 strftime() 的行为相同,不同的是返回时间是格林威治标准时(GMT
)。
strftime(format,timestamp)
format 可选。规定如何返回结果。
timestamp 可选。
例子:

<?php
echo(strftime("%b %d %Y %X", mktime(20,0,0,12,31,98)));
echo(gmstrftime("%b %d %Y %X", mktime(20,0,0,12,31,98)));
//输出当前日期、时间和时区
echo(gmstrftime("It is %a on %b %d, %Y, %X time zone: %Z",time()));
?>

显示:

Dec 31 1998 20:00:00
Dec 31 1998 19:00:00
It is Wed on Jan 25, 2006, 11:32:10 time zone: W. Europe Standard Time

十:
idate() 函数将本地时间/日期格式化为整数。
与 date() 不同,idate() 只接受一个字符作为 format 参数。
strftime(format,timestamp)
format 可选。规定如何返回结果。
B Swatch Beat/Internet Time
d 月份中的第几天
h 小时(12 小时格式)
H 小时(24 小时格式)
i 分钟
I 如果启用夏时制则返回 1,否则返回 0
L 如果是闰年则返回 1,否则返回 0
m 月份的数字
s 秒数
t 本月的总天数
U 自 Unix 纪元(January 1 1970 00:00:00 GMT)起的秒数――这和 time() 作用相同
w 星期中的第几天(星期天是 0)
W ISO-8601 格式年份中的第几个星期,每星期从星期一开始
y 年份(1 或 2 位数字――见下面说明)
Y 年份(4 位数字)
z 年份中的第几天
Z 以秒为单位的时区偏移量
timestamp 可选。默认值为本地当前时间,即 time() 的值。
例子:

<?php
echo(idate("Y"));
?>

显示

2009

十一:
localtime() 函数返回本地时间(一个数组)。
localtime(timestamp,is_associative)参数 描述
timestamp 可选。规定被格式化的日期或时间。若未规定 timestamp,则使用当前的本地时间。
is_associative 可选。规定返回索引数组还是关联数组。
localtime() 的第一个参数是时间戳,如果没有给出则使用从 time() 返回的当前时间。
第二个参数是 is_associative,如果设为 false 或未提供则返回的是普通的数字索引数组。如果该参数设为 true 则 localtime() 函数返
回一个关联数组。
关联数组中不同的键名是:
"tm_sec" - 秒数
"tm_min" - 分钟数
"tm_hour" - 小时
"tm_mday" - 月份中的第几日
"tm_mon" - 年份中的第几个月,从 0 开始表示一月
"tm_year" - 年份,从 1900 开始
"tm_wday" - 星期中的第几天
"tm_yday" - 一年中的第几天
"tm_isdst" - 夏令时当前是否生效
注释:月份从 0(一月)到 11(十二月),星期数从 0(星期天)到 6(星期六)。
例子:

<?php
$localtime = localtime();
$localtime_assoc = localtime(time(), true);
print_r($localtime);
print_r($localtime_assoc);
?>

显示:

Array
(
    [0] => 24
    [1] => 3
    [2] => 19
    [3] => 3
    [4] => 3
    [5] => 105
    [6] => 0
    [7] => 92
    [9] => 1
)

十一:
microtime() 函数返回当前 Unix 时间戳和微秒数。
microtime(get_as_float)
get_as_float 如果给出了 get_as_float 参数并且其值等价于 TRUE,该函数将返回一个浮点数。
如果调用时不带可选参数,本函数以 "msec sec" 的格式返回一个字符串,其中 sec 是自 Unix 纪元(0:00:00 January 1, 1970 GMT)起到
现在的秒数,msec 是微秒部分。字符串的两部分都是以秒为单位返回的。
例子:

<?php
echo(microtime());
?>

显示:

0.25139300 1138197510

十二:
strptime() 函数解析由 strftime() 生成的日期/时间。
strptime(date,format)
date 要解析的字符串(例如从 strftime() 返回的)。
format date 所使用的格式(与 strftime() 中所使用的相同)。
strptime() 返回一个将 date 解析后的数组,如果出错返回 FALSE。
月份和星期几的名字以及其它与语种有关的字符串对应于 setlocale()设定的当前区域(LC_TIME)。
数组中包含以下单元:
键名   说明
tm_sec 当前分钟内的秒数(0-61)
tm_min 当前小时内的分钟数(0-59)
tm_hour 午夜起的小时数(0-23)
tm_mday 月份中的第几天(1-31)
tm_mon 自一月起过了几个月(0-11)
tm_year 自 1900 年起过了几年
tm_wday 自星期天起过了几天(0-6)
tm_yday 本年自一月一日起过了多少天(0-365)
unparsed date 中未能通过指定的 format 识别的部分
例子:

<php
$format="%d/%m/%Y %H:%M:%S";
$strf=strftime($format);
echo("$strf");
print_r(strptime($strf,$format));
?>

显示:

03/10/2005 13:23:44
Array
(
[tm_sec] => 44
[tm_min] => 23
[tm_hour] => 13
[tm_mday] => 3
[tm_mon] => 9
[tm_year] => 105
[tm_wday] => 0
[tm_yday] => 276
[unparsed] =>
)

十三:
date_sunrise() 函数返回指定的日期与地点的日出时间。
date_sunrise(timestamp,format,latitude,longitude,zenith,gmt_offset)
date_sunset() 函数返回指定的日期与地点的日落时间。
date_sunset(timestamp,format,latitude,longitude,zenith,gmt_offset)
1timestamp 必需。
2format 可选。规定如何返回结果:
SUNFUNCS_RET_STRING (以 string 格式返回结果,比如 16:46)
SUNFUNCS_RET_DOUBLE (以 float 格式返回结果,比如 16.78243132)
SUNFUNCS_RET_TIMESTAMP (以 integer 格式(时间戳)返回结果,比如 1095034606)
3latitude 可选。规定地点的纬度。默认是指北纬。因此如果要指定南纬,必须传递一个负值。
4longitude 可选。规定地点的经度。默认是指东经。因此如果要指定西经,必须传递一个负值。
5zenith 可选。
6gmt_offset 可选。规定 GMT 与本地时间的差值。单位是小时。
例子1:

<?php
//计算葡萄牙里斯本的日出时间
//Latitude: 北纬 38.4 度
//Longitude: 西经 9 度
//Zenith ~= 90
//offset: +1 GMT
echo("Date: " . date("D M d Y") . "<br />");
echo("Sunrise time: ");
echo(date_sunrise(time(),SUNFUNCS_RET_STRING,38.4,-9,90,1));
?>

显示

Date: Tue Jan 24 2006
Sunrise time: 08:52

例子2 :

<?php
//计算葡萄牙里斯本的日落时间
//Latitude: 北纬 38.4 度
//Longitude: 西经 9 度
//Zenith ~= 90
//offset: +1 GMT
echo("Date: " . date("D M d Y") . "<br />");
echo("Sunrise time: ");
echo(date_sunset(time(),SUNFUNCS_RET_STRING,38.4,-9,90,1));
?>

显示

Date: Tue Jan 24 2006
Sunrise time: 18:44

十四:
strtotime() 函数将任何英文文本的日期时间描述解析为 Unix 时间戳。
strtotime(time,now)
time 规定要解析的时间字符串。
now 用来计算返回值的时间戳。如果省略该参数,则使用当前时间。
该函数预期接受一个包含美国英语日期格式的字符串并尝试将其解析为 Unix 时间戳(自 January 1 1970 00:00:00 GMT 起的秒数),其值
相对于 now 参数给出的时间,如果没有提供此参数,则用系统当前时间。
该函数将使用 TZ 环境变量(如果有的话)来计算时间戳。自 PHP 5.1.0 起有更容易的方法来定义时区用于所有的日期/时间函数。此过程
在 date_default_timezone_get() 函数页面中有说明。
例子:

<?php
echo(strtotime("now"));
echo(strtotime("3 October 2005"));
echo(strtotime("+5 hours"));
echo(strtotime("+1 week"));
echo(strtotime("+1 week 3 days 7 hours 5 seconds"));
echo(strtotime("next Monday"));
echo(strtotime("last Sunday"));
?>

显示:

1138614504
1128290400
1138632504
1139219304
1139503709
1139180400
1138489200

위 내용은 PHP 날짜 함수 및 PHP 시간 함수의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.