laravel中Carbon包的使用详解

介绍

Carbon是对PHP DateTime模块的二次扩展;提供时间格式化,时间计算的功能;

  • 官方主页为 http://carbon.nesbot.com/;

  • Github地址为 https://github.com/briannesbitt/Carbon;

文件结构

目录描述
-- src Carbon源文件
-- src\Carbon Carbon源文件
-- src\Carbon\CarbonInterval.php DateInterval类的二次扩展类CarbonInterval;主要用于时差计算;
-- src\Carbon\Carbon.php DateTime类的二次扩展类Carbon;提供时间计算,格式化输出的功能;
-- src\Carbon\Exceptions 自定义异常文件夹
-- src\Carbon\Lang 语言本地化文件夹;Carbon类的diffForHumans方法会用到;
   
-- tests Carbon测试用例文件
-- tests\AbstractTestCase.php 所有测试文件的父类;提供了执行前初始化执行后清理的功能, 及其它公共的API;
-- tests\Carbon 针对src\\Carbon\\Carbon.php的测试用例组
-- tests\CarbonInterval 针对src\\Carbon\\CarbonInterval.php的测试用例组
-- tests\Localization 针对src\\Carbon\\Lang的测试用例组

API 细则

本篇涉及 API 为 Carbon 1.22.1 版本;

Carbon

用途:生成Carbon实例

方法名参数描述
__construct time(null),tz(null) 根据格式化时间字符串和指定时区, 创建Carbon实例
instance(static) DateTime $dt 根据 DateTime实例创建Carbon实例
parse(static) time(null),tz(null) 根据格式化时间字符串和指定时区, 创建Carbon实例
create(static) year(null),month(null), day(null),hour(null), minute(null),second(null), $tz(null) 根据日期和时间创建Carbon实例 如果指定参数为null,会默认使用当前时间的对应值
createSafe(static) year(null),month(null), day(null),hour(null), minute(null),second(null), $tz(null) 根据日期和时间创建Carbon实例 如果指定参数为null,会默认使用当前时间的对应值; 指定参数不符合规范,会返回异常;
createFromDate(static) year(null),month(null), day(null),tz(null) 根据日期创建Carbon实例如果指定参数为null,会默认使用当前时间的对应值
createFromTime(static) hour(null),minute(null), minute(null),tz(null) 根据时间创建Carbon实例如果指定参数为null,会默认使用当前时间的对应值
createFromFormat(static) format,time, $tz(null) 根据时间字符串及其对应的format字符串创建Carbon实例
createFromTimestamp(static) timestamp,tz(null) 根据时间戳和指定时区, 创建Carbon实例
createFromTimestampUTC(static) $timestamp 根据时间戳和utc时区, 创建Carbon实例
now(static) $tx(null) 根据当前时间创建Carbon实例
today(static) $tx(null) 根据当前时间创建Carbon实例,时间重置为 0时0分0秒
tomorrow(static) $tx(null) 根据当前时间,加一天,创建Carbon实例
yesterday(static) $tx(null) 根据当前时间, 减一天, 创建Carbon实例
minValue(static) '' 创建系统支持的最小时间,并返回Carbon实例
maxValue(static) '' 创建系统支持的最大时间,并返回Carbon实例
copy '' 复制当前Carbon实例
fromSerialized(static) $value 解析序列化字符串,创建Carbon实例

用途:修改Carbon实例

方法名参数描述
setDate $year, $month, $day 设置当前实例的年,月,日
setDateTime $year, $month, $day, $hour, $minute, $second(0) 设置当前实例的年,月,日,时,分,秒
setTimeFromTimeString $time 根据 H:i:s 字符串设置当前实例时间
timestamp $value 根据时间戳设置当前实例时间
second $value 设置当前实例时间指定秒
minute $value 设置当前实例时间指定分钟
hour $value 设置当前实例时间指定小时
day $value 设置当前实例时间指定天
month $value 设置当前实例时间指月份
year $value 设置当前实例时间指定年份
startOfDay '' 重置当前实例时间为 0时0分0秒
endOfDay '' 重置当前实例时间为 23时59分59秒
startOfWeek '' 重置当前实例时间为 本周的第一天,同时设置 0时0分0秒
endOfWeek '' 重置当前实例时间为 本周的最后一天,同时设置 23时59分59秒
startOfMonth '' 重置当前实例时间为 本月第一天,同时设置 0时0分0秒
endOfMonth '' 重置当前实例时间为 本月最后一天,同时设置 23时59分59秒
startOfQuarter '' 重置当前实例时间为 本季度第一天,同时设置 0时0分0秒
endOfQuarter '' 重置当前实例时间为 本季度最后一天,同时设置 23时59分59秒
startOfYear '' 重置当前实例时间为 本年第一天,同时设置 0时0分0秒
endOfYear '' 重置当前实例时间为 本年最后一天,同时设置 23时59分59秒
startOfDecade '' 重置当前实例时间为 所在十年的第一天,同时设置 0时0分0秒
endOfDecade '' 重置当前实例时间为 所在十年的最后一天,同时设置 23时59分59秒
startOfCentury '' 重置当前实例时间为 本世纪的第一天,同时设置 0时0分0秒
endOfCentury '' 重置当前实例时间为 本世纪的最后一天,同时设置 23时59分59秒
next $dayOfWeek(null) 重置当前实例时间为 下一个指定dayOfWeek,同时设置 0时0分0秒
previous $dayOfWeek(null) 重置当前实例时间为 上一个指定dayOfWeek,同时设置 0时0分0秒
nextWeekday '' 重置当前实例时间为 下一个工作日,同时设置 0时0分0秒
previousWeekday '' 重置当前实例时间为 上一个工作日,同时设置 0时0分0秒
nextWeekendDay '' 重置当前实例时间为 下一个双休日,同时设置 0时0分0秒
previousWeekendDay '' 重置当前实例时间为 上一个双休日,同时设置 0时0分0秒
firstOfMonth $dayOfWeek(null) 重置当前实例时间为 本月第一周的指定dayOfWeek,同时设置 0时0分0秒
nthOfMonth nth,dayOfWeek 重置当前实例时间为 本月第n周的指定dayOfWeek,同时设置 0时0分0秒
lastOfMonth $dayOfWeek(null) 重置当前实例时间为 本月最后一周的指定dayOfWeek,同时设置 0时0分0秒
firstOfQuarter $dayOfWeek(null) 重置当前实例时间为 当前季度第一周的指定dayOfWeek,同时设置 0时0分0秒
nthOfQuarter nth,dayOfWeek 重置当前实例时间为 当前季度第n周的指定dayOfWeek,同时设置 0时0分0秒
lastOfQuarter $dayOfWeek(null) 重置当前实例时间为 当前季度最后一周的指定dayOfWeek,同时设置 0时0分0秒
firstOfYear $dayOfWeek(null) 重置当前实例时间为 本年第一周的指定dayOfWeek,同时设置 0时0分0秒
nthOfYear nth,dayOfWeek 重置当前实例时间为 本年第n周的指定dayOfWeek,同时设置 0时0分0秒
lastOfYear $dayOfWeek(null) 重置当前实例时间为 本年最后一周的指定dayOfWeek,同时设置 0时0分0秒
average Carbon $dt 重置当前实例时间为 与指定Carbon对象的中间时刻
modify $modify modify字符串重置当前实例时间

用途:格式化时间

方法名参数描述
__toString '' 按变量$toStringFormat的格式输出
toDateString '' 日期格式化输出
toTimeString '' 时间格式化输出
toDateTimeString '' 日期时间格式化输出
toDayDateTimeString '' 格式化输出如 "Fri, Jan 3, 2013 10:50 PM"
toAtomString '' 格式化输出如 "2012-10-20T14:12:26+00:00"
toCookieString '' 格式化输出如 "Friday, 02-Jan-2012 14:20:39 UTC"
toIso8601String '' 同 toAtomString
toRfc822String '' 格式化输出如 "Mon, 15 Aug 05 15:52:01 +0000"
toRfc850String '' 格式化输出如 "Monday, 15-Aug-05 15:52:01 UTC"
toRfc1036String '' 格式化输出如 "2005-08-15T15:52:01+0000"
toRfc1123String '' 格式化输出如 "Mon, 15 Aug 2005 15:52:01 +0000"
toRfc2822String '' 格式化输出如 "Mon, 15 Aug 05 15:52:01 +0000"
toRfc3339String '' 同 toAtomString
toRssString '' 格式化输出如 "Mon, 15 Aug 2005 15:52:01 +0000"
toW3cString '' 格式化输出如 "2005-08-15T15:52:01+00:00"
toFormattedDateString '' 格式化输出如 "Jan 11, 1999"
formatLocalized $format 指定格式本地化输出

用途:时间判断

方法名参数描述
eq Carbon $dt 判断当前Carbon实例与指定Carbon对象时间是否一样
equalTo Carbon $dt 同 eq 方法
ne Carbon $dt 判断当前Carbon实例与指定Carbon对象时间是否不相同
notEqualTo Carbon $dt 同 ne 方法
gt Carbon $dt 判断当前Carbon实例是否大于指定Carbon对象时间
greaterThan Carbon $dt 同 gt 方法
gte Carbon $dt 判断当前Carbon实例是否大于等于指定Carbon对象时间
greaterThanOrEqualTo Carbon $dt 同 gte 方法
lt Carbon $dt 判断当前Carbon实例是否小于指定Carbon对象时间
lessThan Carbon $dt 同 lt 方法
lte Carbon $dt 判断当前Carbon实例是否小于等于指定Carbon对象时间
lessThanOrEqualTo Carbon $dt 同 lte 方法
between Carbon dt1, Carbondt2, $equal(true) 判断当前Carbon实例是否在指定Carbon对象时间之间, 第三个参数表示是否可以等于指定Carbon对象
min Carbon $dt 获取当前实例与指定Carbon对象中,最小的对象
minimum Carbon $dt min
max Carbon $dt 获取当前实例与指定Carbon对象中,最大的对象
maximum Carbon $dt max
closest Carbon dt1, Carbondt2 获取最接近当前实例时间的Carbon对象
farthest Carbon dt1, Carbondt2 获取最不接近当前实例时间的Carbon对象
isSameAs format, Carbondt 判断当前实例与指定Carbon对象的format格式化结果是否相同
isSameDay Carbon $dt 判断当前实例与指定Carbon对象是否是同一天
isSameMonth Carbon dt(null),ofSameYear(false) 判断当前实例与指定Carbon对象月份是否相同
isBirthday Carbon $dt 判断当前实例与指定Carbon对象月日数是否相同
isSameYear Carbon $dt 判断当前实例与指定Carbon对象年份是否相同
isSunday '' 判断当前实例是否是周日
isMonday '' 判断当前实例是否是周一
isTuesday '' 判断当前实例是否是周二
isWednesday '' 判断当前实例是否是周三
isThursday '' 判断当前实例是否是周四
isFriday '' 判断当前实例是否是周五
isSaturday '' 判断当前实例是否是周六
isYesterday '' 判断当前实例是否是昨天
isToday '' 判断当前实例是否是今天
isTomorrow '' 判断当前实例是否是明天
isWeekday '' 判断当前实例是否属于工作日
isWeekend '' 判断当前实例是否属于周末双休
isLastWeek '' 判断当前实例是否属于上周
isNextWeek '' 判断当前实例是否属于下一周
isLastMonth '' 判断当前实例是否属于上一个月
isCurrentMonth '' 判断当前实例是否属于当前月
isNextMonth '' 判断当前实例是否属于下一个月
isLastYear '' 判断当前实例是否属于去年
isCurrentYear '' 判断当前实例是否属于当前年
isNextYear '' 判断当前实例是否属于下一年
isLeapYear '' 判断当前实例是否属于闰年
isLongYear '' 判断当前实例是否属于长年,即一年不只有52个星期
isPast '' 判断当前实例是否属于过去
isFuture '' 判断当前实例是否属于未来

用途:时间计算

方法名参数描述
addSecond $value(1) 当前实例添加指定数量的秒数,返回当前实例
subSecond $value(1) 当前实例减去指定数量的秒数,返回当前实例
addSeconds $value addSecond
subSeconds $value subSecond
addMinute $value(1) 当前实例添加指定数量的分钟数,返回当前实例
subMinute $value(1) 当前实例减去指定数量的分钟数,返回当前实例
addMinutes $value addMinute
subMinutes $value subMinute
addHour $value(1) 当前实例添加指定数量的小时数,返回当前实例
subHour $value(1) 当前实例减去指定数量的小时数,返回当前实例
addHours $value addHour
subHours $value subHour
addDay $value(1) 当前实例添加指定数量的天数,返回当前实例
subDay $value(1) 当前实例减去指定数量的天数,返回当前实例
addDays $value addDay
subDays $value subDay
addWeekday $value(1) 当前实例添加指定数量的工作日数,返回当前实例
subWeekday $value(1) 当前实例减去指定数量的工作日数,返回当前实例
addWeekdays $value addWeekday
subWeekdays $value subWeekday
addWeek $value(1) 当前实例添加指定数量的星期数,返回当前实例
subWeek $value(1) 当前实例减去指定数量的星期数,返回当前实例
addWeeks $value addWeek
subWeeks $value subWeek
addMonth $value(1) 当前实例添加指定数量的月数,返回当前实例
subMonth $value(1) 当前实例减去指定数量的月数,返回当前实例
addMonths $value addMonth
subMonths $value subMonth
addMonthWithOverflow(1) $value(1) 当前实例添加指定数量的月数(可溢出),返回当前实例
subMonthWithOverflow(1) $value(1) 当前实例添加指定数量的月数(可溢出),返回当前实例
addMonthsWithOverflow $value addMonthWithOverflow
subMonthsWithOverflow $value subMonthWithOverflow
addMonthNoOverflow(1) $value(1) 当前实例添加指定数量的月数(不可溢出),返回当前实例
subMonthNoOverflow(1) $value(1) 当前实例添加指定数量的月数(不可溢出),返回当前实例
addMonthsNoOverflow $value addMonthNoOverflow
subMonthsNoOverflow $value subMonthNoOverflow
addQuarter(1) $value(1) 当前实例添加指定数量的季度数,返回当前实例
subQuarter(1) $value(1) 当前实例减去指定数量的季度数,返回当前实例
addQuarters $value addQuarter
subQuarters $value subQuarter
addYear(1) $value(1) 当前实例添加指定数量的年数,返回当前实例
subYear(1) $value(1) 当前实例减去指定数量的年数,返回当前实例
addYears $value addYear
subYears $value subYear
addCentury(1) $value(1) 当前实例添加指定数量的世纪数,返回当前实例
subCentury(1) $value(1) 当前实例减去指定数量的世纪数,返回当前实例
addCenturies $value addCentury
subCenturies $value subCentury

用途:时间差值比较

方法名参数描述
diffInSeconds Carbon dt(null),abs(true) 获取指定Carbon对象与当前实例时间的秒数差,前者 - 后者; abs表示是否返回绝对值
secondsSinceMidnight '' 获取当前实例时间的 0时0分0秒 与当前实例时间的秒差
secondsUntilEndOfDay '' 获取当前实例时间的 23时59分59秒 与当前实例时间的秒差
diffInMinutes Carbon dt(null),abs(true) 获取指定Carbon对象与当前实例时间的分钟差, 取整
diffInHours Carbon dt(null),abs(true) 获取指定Carbon对象与当前实例时间的小时差, 取整
diffInHoursFiltered Closure callback, Carbondt(null), $abs(true) 获取指定Carbon对象与当前实例时间的(通过回调函数较验的)小时差, 取整
diffInDays Carbon dt(null),abs(true) 获取指定Carbon对象与当前实例时间的天数差, 取整
diffInDaysFiltered Closure callback, Carbondt(null), $abs(true) 获取指定Carbon对象与当前实例时间的(通过回调函数较验的)天数差, 取整
diffInWeekdays Carbon dt(null),abs(true) 获取指定Carbon对象与当前实例时间的工作日数差, 取整
diffInWeekendDays Carbon dt(null),abs(true) 获取指定Carbon对象与当前实例时间的双休日数差, 取整
diffInWeeks Carbon dt(null),abs(true) 获取指定Carbon对象与当前实例时间的星期数差, 取整
diffInMonths Carbon dt(null),abs(true) 获取指定Carbon对象与当前实例时间的月数差, 取整
diffInYears Carbon dt(null),abs(true) 获取指定Carbon对象与当前实例时间的年数差, 取整
diffFiltered CarbonInterval ci, Closurecallback, Carbon dt(null),abs(true) 获取指定Carbon对象与当前实例时间的(通过回调函数较验的)$ci差, 取整
diffForHumans Carbon other(null),absolute(false), $short(false) 获取指定Carbon对象与当前实例时间的时间差,以便于人类阅读的格式呈现

用途:Getter & Setter

方法名参数描述
getDays(static) '' 获取days of the week
getWeekStartsAt(static) '' 获取一周的第一天
setWeekStartsAt(static) $day 设置一周的第一天
getWeekEndsAt(static) '' 获取一周的最后一天
setWeekEndsAt(static) $day 设置一周的最后一天
getWeekendDays(static) '' 获取双休日(数组)
setWeekendDays(static) $days 设置双休日
getTranslator(static) '' 获取translator实例
setTranslator(static) TranslatorInterface $translator 设置translator实例
getLocale(static) '' 获取当前本地化语言
setLocale(static) $locale 设置当前本地化语言
timezone $value 设置时区
tz $value 设置时区
setTimezone $value 设置时区
setToStringFormat(static) $format 设置变量$toStringFormat
resetToStringFormat(static) '' 设置变量$toStringFormat为默认值
setTestNow(static) $testNow(null) 设置变量$testNow,测试专用,初始化时的$now
getTestNow(static) '' 获取变量$testNow
hasTestNow(static) '' 判断$testNow是否为空

用途:其它

方法名参数描述
setUtf8(static) $utf8 设置是否采用 utf8 编码方式
getLastErrors(static) '' 获取无效时间的错误格式模板
serialize '' 返回当前实例的序列化字符串
hasRelativeKeywords(static) $time 判断字符串中是否有指定的关键字
shouldOverflowMonths(static) '' 获取变量$monthsOverflow
useMonthsOverflow(static) $monthsOverflow(true) 设置变量$monthsOverflow
resetMonthsOverflow(static) '' 重置变量$monthsOverflow为 true
__get $name 魔术方法
__isset $name 魔术方法
__set name,value 魔术方法

CarbonInterval

用途:生成CarbonInterval实例

方法名参数描述
__construct years(1),months(null), weeks(null),days(null), hours(null),minutes(null), $seconds(null) 创建CarbonInterval实例
create(static) years(1),months(null), weeks(null),days(null), hours(null),minutes(null), $seconds(null) 创建CarbonInterval实例
second(static) $value 创建 CarbonInterval 实例
seconds(static) $value 创建 CarbonInterval 实例
minute(static) $value 创建 CarbonInterval 实例
minutes(static) $value 创建 CarbonInterval 实例
hour(static) $value 创建 CarbonInterval 实例
hours(static) $value 创建 CarbonInterval 实例
day(static) $value 创建 CarbonInterval 实例
days(static) $value 创建 CarbonInterval 实例
dayz(static) $value 创建 CarbonInterval 实例
week(static) $value 创建 CarbonInterval 实例
weeks(static) $value 创建 CarbonInterval 实例
month(static) $value 创建 CarbonInterval 实例
months(static) $value 创建 CarbonInterval 实例
year(static) $value 创建 CarbonInterval 实例
years(static) $value 创建 CarbonInterval 实例
instance(static) $value 创建 CarbonInterval 实例

用途:本地化

方法名参数描述
translator(static) '' 初始化translator实例
getTranslator(static) '' 获取translator实例
setTranslator(static) TranslatorInterface $translator 设置translator实例
getLocale(static) '' 获取当前本地化语言
setLocale(static) $locale 设置当前本地化语言

用途:计算

方法名参数描述
add DateInterval $interval 将指定DateInterval的时间叠加到当前实例

用途:格式化

方法名参数描述
spec '' 获取规范的间隔描述字符串
forHumans '' 获取便于人类阅读的间隔描述字符串
__toString '' forHumans

用途:其它

方法名参数描述
__get '' 魔术方法;可操作变量有years/months/dayz/hours/minutes/seconds/weeks/daysExcludeWeeks/dayzExcludeWeeks
__set '' 魔术方法;可操作变量有years/months/dayz/hours/minutes/seconds/weeks/daysExcludeWeeks/dayzExcludeWeeks
__call '' 魔术方法;可操作方法有years/year/months/month/weeks/week/days/dayz/day/hours/hour/minutes/minute/seconds/second
weeksAndDays weeks,days 为当前实例的dayz变量赋值为($weeks * Carbon::DAYS_PER_WEEK) + $days
posted @ 2019-09-19 11:11  怼宝灿灿  阅读(3650)  评论(0编辑  收藏  举报