一个日期库,帮助您在不同语言中处理日期

资助包维护!
jenssegers
Tidelift

安装次数: 8,775,158

依赖项: 98

建议者: 2

安全: 0

星星: 1,815

关注者: 47

分支: 244

开放问题: 6


README

Latest Stable Version Total Downloads Build Status Coverage Status Donate

此日期库扩展了 Carbon,增加了多语言支持。如 formatdiffForHumansparsecreateFromFormat 以及新的 timespan 方法,现在将根据您的区域设置进行翻译。

所有由贡献者完成的翻译都已移动到 Carbon 2 包中。此包现在使用 Carbon 翻译为您提供更好的多语言支持。翻译问题应在 Carbon 仓库 上报告。请也查看原始文档 此处

安装

使用 composer 安装

composer require jenssegers/date

Laravel

包含一个服务提供者以与 Laravel 框架集成。此提供者将获取应用程序的区域设置并用于翻译。如果您使用 Laravel 5.5+ 并使用自动发现,则该服务将自动注册。否则,要将服务提供者添加到 config/app.php 中的 providers 数组中,请添加以下内容:

Jenssegers\Date\DateServiceProvider::class,

您也可以将其作为 Facade 添加到 config/app.php 中。

'Date' => Jenssegers\Date\Date::class,

语言

此包包含以下语言的文件(https://carbon.nesbot.com/docs/#supported-locales):

  • Afar (aa)
  • Afrikaans (af)
  • Aghem (agq)
  • Aguaruna (agr)
  • Akan (ak)
  • Amharic (am)
  • Aragonese (an)
  • Angika (anp)
  • Arabic (ar)
  • Assamese (as)
  • Asu (asa)
  • Asturian (ast)
  • Southern Aymara (ayc)
  • Azerbaijani (az)
  • Basaa (bas)
  • Belarusian (be)
  • Bemba (bem)
  • ber (ber)
  • Bena (bez)
  • Bulgarian (bg)
  • Bhili (bhb)
  • Bhojpuri (bho)
  • Bislama (bi)
  • Bambara (bm)
  • Bengali (bn)
  • Tibetan (bo)
  • Breton (br)
  • Bodo (brx)
  • Bosnian (bs)
  • Bilin (byn)
  • Catalan (ca)
  • Chakma (ccp)
  • Chechen (ce)
  • Chiga (cgg)
  • Cherokee (chr)
  • Chinese (cmn)
  • Crimean Turkish (crh)
  • Czech (cs)
  • Kashubian (csb)
  • Church Slavic (cu)
  • Chuvash (cv)
  • Welsh (cy)
  • Danish (da)
  • Taita (dav)
  • German (de)
  • Zarma (dje)
  • Dogri (macrolanguage) (doi)
  • Lower Sorbian (dsb)
  • Duala (dua)
  • Divehi (dv)
  • Jola-Fonyi (dyo)
  • Dzongkha (dz)
  • Embu (ebu)
  • Ewe (ee)
  • Greek (modern) (el)
  • English (en)
  • Esperanto (eo)
  • Spanish (es)
  • Estonian (et)
  • Basque (eu)
  • Ewondo (ewo)
  • Persian (fa)
  • Fulah (ff)
  • Finnish (fi)
  • Filipino (fil)
  • Faroese (fo)
  • French (fr)
  • Friulian (fur)
  • Western Frisian (fy)
  • Irish (ga)
  • Gaelic (gd)
  • Geez (gez)
  • Galician (gl)
  • Konkani (gom)
  • Swiss German (gsw)
  • Gujarati (gu)
  • Gusii (guz)
  • Manx (gv)
  • Hausa (ha)
  • Hakka Chinese (hak)
  • Hawaiian (haw)
  • Hebrew (modern) (he)
  • Hindi (hi)
  • Fiji Hindi (hif)
  • Chhattisgarhi (hne)
  • Croatian (hr)
  • Upper Sorbian (hsb)
  • 海地语(ht)
  • 匈牙利语(hu)
  • 亚美尼亚语(hy)
  • 国际化(i18n)
  • 国际语(ia)
  • 印度尼西亚语(id)
  • 伊博语(ig)
  • 四川彝语(ii)
  • 因纽特语(ik)
  • 印地语(in)
  • 冰岛语(is)
  • 意大利语(it)
  • 因纽特语(iu)
  • 希伯来语(iw)
  • 日语(ja)
  • 恩戈马语(jgo)
  • 马查梅语(jmc)
  • 爪哇语(jv)
  • 格鲁吉亚语(ka)
  • 卡比里语(kab)
  • 卡姆巴语(kam)
  • 马孔德语(kde)
  • 卡布维尔语(kea)
  • 科拉奇尼语(khq)
  • 基库尤语(ki)
  • 哈萨克语(kk)
  • 卡科语(kkj)
  • 格陵兰语(kl)
  • 卡尔仁金语(kln)
  • 柬埔寨语(km)
  • 卡纳达语(kn)
  • 韩语(ko)
  • 康卡尼语(kok)
  • 克什米尔语(ks)
  • 尚巴语(ksb)
  • 巴菲亚语(ksf)
  • 科隆尼亚语(ksh)
  • 库尔德语(ku)
  • 康沃尔语(kw)
  • 吉尔吉斯语(ky)
  • 兰吉语(lag)
  • 卢森堡语(lb)
  • 刚果语(lg)
  • 林堡语(li)
  • 利古里亚语(lij)
  • 拉科塔语(lkt)
  • 林加拉语(ln)
  • 老挝语(lo)
  • 北部卢里语(lrc)
  • 立陶宛语(lt)
  • 卢巴-卡坦加语(lu)
  • 鲁奥语(luo)
  • 鲁伊亚语(luy)
  • 拉脱维亚语(lv)
  • 文学中文(lzh)
  • 马加希语(mag)
  • 迈蒂利语(mai)
  • 马萨伊语(mas)
  • 梅鲁语(mer)
  • 毛里求斯语(mfe)
  • 马拉加什语(mg)
  • 马库瓦-梅托语(mgh)
  • 梅塔语(mgo)
  • 东部马里语(mhr)
  • 毛利语(mi)
  • 米斯基托语(miq)
  • 卡尔比语(mjw)
  • 马其顿语(mk)
  • 马拉雅拉姆语(ml)
  • 蒙古语(mn)
  • Manipuri 语(mni)
  • 毛语(mo)
  • 马拉地语(mr)
  • 马来语(ms)
  • 马耳他语(mt)
  • 芒达语(mua)
  • 缅甸语(my)
  • 马赞德兰语(mzn)
  • 闽南语(nan)
  • 纳马语(naq)
  • 挪威 bokmål 语(nb)
  • 北方恩德贝勒语(nd)
  • 低地德语(nds)
  • 尼泊尔语(ne)
  • 中部纳瓦特尔语(nhn)
  • 纽埃语(niu)
  • 荷兰语(nl)
  • 卡西奥语(nmg)
  • 挪威 nyorsk 语(nn)
  • 尼姆博恩语(nnh)
  • 挪威语(no)
  • 南方恩德贝勒语(nr)
  • 北部索托语(nso)
  • 努尔语(nus)
  • 恩扬科莱语(nyn)
  • 奥克西塔尼亚语(oc)
  • 奥罗莫语(om)
  • 奥里亚语(or)
  • 奥塞梯语(os)
  • 旁遮普语(pa)
  • 帕皮阿门托语(pap)
  • 波兰语(pl)
  • 普鲁士语(prg)
  • 普什图语(ps)
  • 葡萄牙语(pt)
  • 基切瓦语(qu)
  • 库斯科基切瓦语(quz)
  • 拉贾斯坦语(raj)
  • 罗曼什语(rm)
  • 伦迪语(rn)
  • 罗马尼亚语(ro)
  • 罗莫语(rof)
  • 俄语(ru)
  • 卢旺达语(rw)
  • 鲁瓦语(rwk)
  • 梵文(sa)
  • 萨哈语(sah)
  • 萨姆布鲁语(saq)
  • 桑提亚利语(sat)
  • 桑古语(sbp)
  • 撒丁语(sc)
  • 信德语(sd)
  • 北方萨米语(se)
  • 塞纳语(seh)
  • 科伊拉博罗塞尼语(ses)
  • 桑戈语(sg)
  • 萨莫格itian 语(sgs)
  • sh 语(sh)
  • 塔吉希特语(shi)
  • 掸语(shn)
  • 舒斯瓦普语(shs)
  • 僧伽罗语(si)
  • 西达摩语(sid)
  • 斯洛伐克语(sk)
  • 斯洛文尼亚语(sl)
  • 萨摩亚语(sm)
  • 伊纳里萨米语(smn)
  • 绍纳语(sn)
  • 索马里语(so)
  • 阿尔巴尼亚语(sq)
  • 塞尔维亚语(sr)
  • 斯威士语(ss)
  • 南方索托语(st)
  • 瑞典语(sv)
  • 斯瓦希里语(sw)
  • 西里西亚语(szl)
  • 泰米尔语(ta)
  • 图卢语(tcy)
  • 泰卢固语(te)
  • 提格雷语(teo)
  • 特图姆语(tet)
  • 塔吉克语(tg)
  • 泰语(th)
  • 契特维亚图鲁语(the)
  • 提格雷尼亚语(ti)
  • 提格雷语(tig)
  • 土库曼语(tk)
  • 他加禄语(tl)
  • 克林贡语(tlh)
  • 茨瓦纳语(tn)
  • 汤加语(Tonga Islands)(to)
  • 托克皮辛语(tpi)
  • 土耳其语(tr)
  • 茨翁加语(ts)
  • 鞑靼语(tt)
  • 塔萨瓦克语(twq)
  • 塔洛萨尼亚语(tzl)
  • 塔马齐格特语(tzm)
  • 维吾尔语(ug)
  • 乌克兰语(uk)
  • 乌纳米语(unm)
  • 乌尔都语(ur)
  • 乌兹别克语(uz)
  • 瓦伊语(vai)
  • 文达语(ve)
  • 越南语(vi)
  • 沃拉普克语(vo)
  • 万琼语(vun)
  • 瓦隆语(wa)
  • 瓦尔斯语(wae)
  • 沃尔耶塔语(wal)
  • 沃洛夫语(wo)
  • 科萨语(xh)
  • 索加语(xog)
  • 扬本语(yav)
  • 意第绪语(yi)
  • 约鲁巴语(yo)
  • 粤语(yue)
  • 约乌(摩罗贝省)(yuw)
  • 标准摩洛哥塔马齐格特语(zgh)
  • 中文(zh)
  • 祖鲁语(zu)

用法

Date类扩展了Carbon方法,如formatdiffForHumans,并根据您的区域进行翻译

use Jenssegers\Date\Date;

Date::setLocale('nl');

echo Date::now()->format('l j F Y H:i:s'); // zondag 28 april 2013 21:58:16

echo Date::parse('-1 day')->diffForHumans(); // 1 dag geleden

Date类还添加了一些别名和额外的函数,例如:agodiffForHumans的别名,还有timespan方法

echo $date->timespan(); // 3 months, 1 week, 1 day, 3 hours, 20 minutes

parsecreateFromFormat这样的函数也支持“反向翻译”。当使用已翻译的输入调用这些函数时,它会在传递给DateTime之前尝试将其翻译成英语

$date = Date::createFromFormat('l d F Y', 'zaterdag 21 maart 2015');

Carbon

Carbon是Date类的基础库。所有原始的Carbon操作仍然可用,更多信息请访问https://carbon.nesbot.com/docs。以下是一些可用方法

创建日期

您可以创建Date对象,就像创建DateTime对象一样(https://php.ac.cn/manual/en/datetime.construct.php

$date = new Date();
$date = new Date('2000-01-31');
$date = new Date('2000-01-31 12:00:00');

// With time zone
$date = new Date('2000-01-31', new DateTimeZone('Europe/Brussels'));

您可以省略创建DateTimeZone对象

$date = new Date('2000-01-31', 'Europe/Brussels');

从相对格式创建日期(https://php.ac.cn/manual/en/datetime.formats.relative.php

$date = new Date('now');
$date = new Date('today');
$date = new Date('+1 hour');
$date = new Date('next monday');

这也可以使用以下静态方法实现

$date = Date::parse('now');
$date = Date::now();

从时间戳创建日期

$date = new Date(1367186296);

或从现有的日期或时间创建

$date = Date::createFromDate(2000, 1, 31);
$date = Date::createFromTime(12, 0, 0);
$date = Date::create(2000, 1, 31, 12, 0, 0);

日期格式化

您可以像格式化DateTime对象一样格式化Date对象(https://php.ac.cn/manual/en/function.date.php

echo Date::now()->format('Y-m-d'); // 2000-01-31

Date对象可以转换为字符串

echo Date::now(); // 2000-01-31 12:00:00

获取人类可读的输出(diffForHumans的别名)

echo $date->ago(); // 5 days ago

计算时间段

$date = new Date('+1000 days');
echo Date::now()->timespan($date);
// 2 years, 8 months, 3 weeks, 5 days

// or even
echo Date::now()->timespan('+1000 days');

获取自日期以来的年份

$date = new Date('-10 years');
echo $date->age; // 10

$date = new Date('+10 years');
echo $date->age; // -10

日期操作

您可以使用addsub方法,使用相对间隔(https://php.ac.cn/manual/en/datetime.formats.relative.php)进行操作

$yesterday = Date::now()->sub('1 day');
$tomorrow  = Date::now()->add('1 day');

// ISO 8601
$date = Date::now()->add('P2Y4DT6H8M');

您可以像对象一样访问和修改所有日期属性

$date->year = 2013:
$date->month = 1;
$date->day = 31;

$date->hour = 12;
$date->minute = 0;
$date->second = 0;

贡献

语言贡献应提交至https://github.com/briannesbitt/Carbon

许可

Laravel Date遵循MIT许可证(MIT)

安全联系信息

要报告安全漏洞,请遵循这些步骤