1.时间与日期常用函数
date() :格式化时间戳为日期:date(format,timestamp)
format:*必填
- d - 一个月中的第几天(从 01 到 31)
- D - 星期几的文本表示(用三个字母表示)
- j - 一个月中的第几天,不带前导零(1 到 31)
- l('L' 的小写形式)- 星期几的完整的文本表示
- N - 星期几的 ISO-8601 数字格式表示(1 表示 Monday[星期一],7 表示 Sunday[星期日])
- S - 一个月中的第几天的英语序数后缀(2 个字符:st、nd、rd 或 th。与 j 搭配使用)
- w - 星期几的数字表示(0 表示 Sunday[星期日],6 表示 Saturday[星期六])
- z - 一年中的第几天(从 0 到 365)
- W - 用 ISO-8601 数字格式表示一年中的星期数字(每周从 Monday[星期一]开始)
- F - 月份的完整的文本表示(January[一月份] 到 December[十二月份])
- m - 月份的数字表示(从 01 到 12)
- M - 月份的短文本表示(用三个字母表示)
- n - 月份的数字表示,不带前导零(1 到 12)
- t - 给定月份中包含的天数
- L - 是否是闰年(如果是闰年则为 1,否则为 0)
- o - ISO-8601 标准下的年份数字
- Y - 年份的四位数表示
- y - 年份的两位数表示
- a - 小写形式表示:am 或 pm
- A - 大写形式表示:AM 或 PM
- B - Swatch Internet Time(000 到 999)
- g - 12 小时制,不带前导零(1 到 12)
- G - 24 小时制,不带前导零(0 到 23)
- h - 12 小时制,带前导零(01 到 12)
- H - 24 小时制,带前导零(00 到 23)
- i - 分,带前导零(00 到 59)
- s - 秒,带前导零(00 到 59)
- u - 微秒(PHP 5.2.2 中新增的)
- e - 时区标识符(例如:UTC、GMT、Atlantic/Azores)
- I(i 的大写形式)- 日期是否是在夏令时(如果是夏令时则为 1,否则为 0)
- O - 格林威治时间(GMT)的差值,单位是小时(实例:+0100)
- P - 格林威治时间(GMT)的差值,单位是 hours:minutes(PHP 5.1.3 中新增的)
- T - 时区的简写(实例:EST、MDT)
- Z - 以秒为单位的时区偏移量。UTC 以西时区的偏移量为负数(-43200 到 50400)
- c - ISO-8601 标准的日期(例如 2013-05-05T16:34:42+00:00)
- r - RFC 2822 格式的日期(例如 Fri, 12 Apr 2013 12:01:05 +0200)
- U - 自 Unix 纪元(January 1 1970 00:00:00 GMT)以来经过的秒数
同时,也可使用下列预定义常量(从 PHP 5.1.0 开始可用):
- DATE_ATOM - Atom(例如:2013-04-12T15:52:01+00:00)
- DATE_COOKIE - HTTP Cookies(例如:Friday, 12-Apr-13 15:52:01 UTC)
- DATE_ISO8601 - ISO-8601(例如:2013-04-12T15:52:01+0000)
- DATE_RFC822 - RFC 822(例如:Fri, 12 Apr 13 15:52:01 +0000)
- DATE_RFC850 - RFC 850(例如:Friday, 12-Apr-13 15:52:01 UTC)
- DATE_RFC1036 - RFC 1036(例如:Fri, 12 Apr 13 15:52:01 +0000)
- DATE_RFC1123 - RFC 1123(例如:Fri, 12 Apr 2013 15:52:01 +0000)
- DATE_RFC2822 - RFC 2822(Fri, 12 Apr 2013 15:52:01 +0000)
- DATE_RFC3339 - 与 DATE_ATOM 相同(从 PHP 5.1.3 开始)
- DATE_RSS - RSS(Fri, 12 Aug 2013 15:52:01 +0000)
- DATE_W3C - 万维网联盟(例如:2013-04-12T15:52:01+00:00)
同时,也可使用下列预定义常量(从 PHP 5.1.0 开始可用):
timestamp:可选
规定整数的 Unix 时间戳。默认是当前的本地时间(time())。
dump(date("Y-m-d H:i:s"),time()); // "2021-08-04 09:24:14"
dump(strtotime(date("2021-05-06 14:10:10"))); 1628069054
echo "明天凌晨的时间戳:".strtotime(date('Y-m-d',strtotime('+1 day')));
echo"一周后:".date("Y-m-d",strtotime("+1 week"));
echo"一周零两天四小时两秒后:".date("Y-m-d G:H:s",strtotime("+1 week 2 days 4 hours 2 seconds"));
echo"下个星期四:".date("Y-m-d",strtotime("next Thursday"));
echo"上个周一:".date("Y-m-d",strtotime("last Monday"));
echo"一个月前:".date("Y-m-d",strtotime("last month"));
echo"一个月后:".date("Y-m-d",strtotime("+1 month"));
echo"十年后:".date("Y-m-d",strtotime("+10 year"));
$beginToday= date("Y-m-d H:i:s",mktime(0,0,0,date('m'),date('d'),date('Y'))); //今天开始时间
$endToday= date("Y-m-d H:i:s",mktime(0,0,0,date('m'),date('d')+1,date('Y'))-1); //今天结束时间
$beginYesterday= date("Y-m-d H:i:s",mktime(0,0,0,date('m'),date('d')-1,date('Y'))); //昨天开始时间
$endYesterday= date("Y-m-d H:i:s",mktime(0,0,0,date('m'),date('d'),date('Y'))-1); //昨天结束时间
$beginThisweek = date("Y-m-d H:i:s",mktime(0, 0 , 0,date("m"),date("d")-date("w")+1,date("Y"))); //本周开始时间
$endThisweek = date("Y-m-d H:i:s",mktime(23,59,59,date("m"),date("d")-date("w")+7,date("Y"))); //本周结束时间
$beginLastweek= date("Y-m-d H:i:s",mktime(0,0,0,date('m'),date('d')-date('w')+1-7,date('Y'))); //上周开始时间
$endLastweek= date("Y-m-d H:i:s",mktime(23,59,59,date('m'),date('d')-date('w')+7-7,date('Y'))); //上周结束时间
$beginThismonth = date("Y-m-d H:i:s",mktime(0,0,0,date('m'),1,date('Y'))); //本月开始时间
$endThismonth = date("Y-m-d H:i:s",mktime(23,59,59,date('m'),date('t'),date('Y'))); //本月结束时间
$beginLastmonth = date("Y-m-d H:i:s",mktime(0, 0 , 0,date("m")-1,1,date("Y"))); //上月开始时间
$endLastmonth = date("Y-m-d H:i:s",mktime(23,59,59,date("m") ,0,date("Y"))); //上月结束时间
$season = ceil((date('n'))/3); //本季度开始时间
$beginThisseason = date('Y-m-d H:i:s', mktime(0, 0, 0,$season*3-3+1,1,date('Y'))); //当前是第几季度
$endThisseason = date('Y-m-d H:i:s', mktime(23,59,59,$season*3,date('t',mktime(0, 0 , 0,$season*3,1,date("Y"))),date('Y'))); //本季度结束时间
$season1 = ceil((date('n'))/3)-1; //上季度开始时间
$beginLastseason = date('Y-m-d H:i:s', mktime(0, 0, 0,$season1*3-3+1,1,date('Y'))); //上季度是第几季度
$endLastseason = date('Y-m-d H:i:s', mktime(23,59,59,$season1*3,date('t',mktime(0, 0 , 0,$season1*3,1,date("Y"))),date('Y'))); //上季度结束时间
beginThisyear=date("Y",time())."-1"."-1"; //本年开始时间 $
$endThisyear =date("Y",time())."-12"."-31"; //本年结束时间
time():返回当前时间的 Unix 时间戳
strtotime():将任何英文文本的日期时间描述解析为 Unix
时间戳
echo strtotime('2012-03-22');输出结果:1332427715(此处结果为随便写的,仅作说明使用)
echo strtotime(date('Y-d-m'));输出结果:(结合date(),结果同上)(时间日期转换为时间戳)
strtotime()还有个很强大的用法,参数可加入对于数字的操作、年月日周英文字符,示例如下:
echo date('Y-m-d H:i:s',strtotime('+1 day'));输出结果:2012-03-23 23:30:33(会发现输出明天此时的时间)
echo date('Y-m-d H:i:s',strtotime('-1 day'));输出结果:2012-03-21 23:30:33(昨天此时的时间)
echo date('Y-m-d H:i:s',strtotime('+1 week'));输出结果:2012-03-29 23:30:33(下个星期此时的时间)
echo date('Y-m-d H:i:s',strtotime('next Thursday'));输出结果:2012-03-29 00:00:00(下个星期四此时的时间)
echo date('Y-m-d H:i:s',strtotime('last Thursday'));输出结果:2012-03-15 00:00:00(上个星期四此时的时间)
2.注意事项:
strtotime('0000-00-00')会返回负数的时间戳:-62169984000
date_default_timezone_set('Asia/Shanghai');//设置时区
3.其他函数:
- checkdate — 验证一个格里高里日期
- date_add — 别名 DateTime::add
- date_create_from_format — 别名 DateTime::createFromFormat
- date_create_immutable_from_format — 别名 DateTimeImmutable::createFromFormat
- date_create_immutable — 别名 DateTimeImmutable::__construct
- date_create — 别名 DateTime::__construct
- date_date_set — 别名 DateTime::setDate
- date_default_timezone_get — 取得一个脚本中所有日期时间函数所使用的默认时区
- date_default_timezone_set — 设定用于一个脚本中所有日期时间函数的默认时区
- date_diff — 别名 DateTime::diff
- date_format — 别名 DateTime::format
- date_get_last_errors — 别名 DateTime::getLastErrors
- date_interval_create_from_date_string — 别名 DateInterval::createFromDateString
- date_interval_format — 别名 DateInterval::format
- date_isodate_set — 别名 DateTime::setISODate
- date_modify — 别名 DateTime::modify
- date_offset_get — 别名 DateTime::getOffset
- date_parse_from_format — Get info about given date formatted according to the specified format
- date_parse — 返回指定日期/时间的详细信息的关联数组
- date_sub — 别名 DateTime::sub
- date_sun_info — Returns an array with information about sunset/sunrise and twilight begin/end
- date_sunrise — 返回给定的日期与地点的日出时间
- date_sunset — 返回给定的日期与地点的日落时间
- date_time_set — 别名 DateTime::setTime
- date_timestamp_get — 别名 DateTime::getTimestamp
- date_timestamp_set — 别名 DateTime::setTimestamp
- date_timezone_get — 别名 DateTime::getTimezone
- date_timezone_set — 别名 DateTime::setTimezone
- date — 格式化一个本地时间/日期
- getdate — 取得日期/时间信息
- gettimeofday — 取得当前时间
- gmdate — 格式化一个 GMT/UTC 日期/时间
- gmmktime — 取得 GMT 日期的 UNIX 时间戳
- gmstrftime — 根据区域设置格式化 GMT/UTC 时间/日期
- idate — 将本地时间日期格式化为整数
- localtime — 取得本地时间
- microtime — 返回当前 Unix 时间戳和微秒数
- mktime — 取得一个日期的 Unix 时间戳
- strftime — 根据区域设置格式化本地时间/日期
- strptime — 解析由 strftime 生成的日期/时间
- strtotime — 将任何字符串的日期时间描述解析为 Unix 时间戳
- time — 返回当前的 Unix 时间戳
- timezone_abbreviations_list — 别名 DateTimeZone::listAbbreviations
- timezone_identifiers_list — 别名 DateTimeZone::listIdentifiers
- timezone_location_get — 别名 DateTimeZone::getLocation
- timezone_name_from_abbr — Returns the timezone name from abbreviation
- timezone_name_get — 别名 DateTimeZone::getName
- timezone_offset_get — 别名 DateTimeZone::getOffset
- timezone_open — 别名 DateTimeZone::__construct
- timezone_transitions_get — 别名 DateTimeZone::getTransitions
- timezone_version_get — 获取 timezonedb 的版本