• laravel中Carbon包的使用详解


    介绍

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

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

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

    文件结构

    目录描述
    -- src Carbon源文件
    -- srcCarbon Carbon源文件
    -- srcCarbonCarbonInterval.php DateInterval类的二次扩展类CarbonInterval;主要用于时差计算;
    -- srcCarbonCarbon.php DateTime类的二次扩展类Carbon;提供时间计算,格式化输出的功能;
    -- srcCarbonExceptions 自定义异常文件夹
    -- srcCarbonLang 语言本地化文件夹;Carbon类的diffForHumans方法会用到;
       
    -- tests Carbon测试用例文件
    -- testsAbstractTestCase.php 所有测试文件的父类;提供了执行前初始化执行后清理的功能, 及其它公共的API;
    -- testsCarbon 针对src\Carbon\Carbon.php的测试用例组
    -- testsCarbonInterval 针对src\Carbon\CarbonInterval.php的测试用例组
    -- testsLocalization 针对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
  • 相关阅读:
    12月12日学习日志
    12月11日学习日志
    12月10日学习日志
    linux下安装git
    ubuntu上安装mysql
    扩展虚拟机容量
    【linux】你需要以 root 身份执行此命令
    Ubuntu新建Django工程错误:ModuleNotFoundError: No module named 'distutils.core'
    LeetCode26. 删除排序数组中的重复项
    LeetCode27. 移除元素
  • 原文地址:https://www.cnblogs.com/hjcan/p/11547883.html
Copyright © 2020-2023  润新知