


À propos de l'utilisation du package de traitement de date et d'heure Carbon dans Laravel
Il y a de nombreux éléments à prendre en compte lors du traitement des dates et des heures, tels que le format de la date, le fuseau horaire, les années bissextiles et les mois avec des jours différents. Il est trop facile de faire des erreurs par vous-même. L'article suivant vous présente principalement la date et l'heure. le traitement du temps dans Laravel. Les amis qui ont besoin d'une utilisation simple de Carbon peuvent s'y référer.
Préface
Nous avons tous souvent besoin de gérer des dates et des heures lors de l'écriture d'applications PHP. Cet article vous fera découvrir Carbon -. hérité de Une extension API de la classe PHP DateTime qui simplifie le travail avec les dates et les heures.
La classe de traitement du temps par défaut utilisée dans Laravel est Carbon.
<?php namespace Carbon; class Carbon extends \DateTime { // code here }
Vous pouvez voir l'extrait de code déclaré ci-dessus dans la classe Carbon dans l'espace de noms Carbon.
Installation
Carbon peut être installé via Composer :
composer require nesbot/carbon
PS : Puisque le projet Laravel a installé ce package par défaut, il n'est pas nécessaire d'exécuter à nouveau la commande ci-dessus.
Pour utiliser
, vous devez importer Carbon via l'espace de noms pour l'utiliser sans fournir le nom complet à chaque fois.
use Carbon\Carbon;
Obtenir l'heure actuelle
Peut être utilisé avec la méthode now() pour obtenir la date et l'heure actuelles. Si vous ne spécifiez pas d'argument, il utilisera le fuseau horaire de la configuration PHP :
<?php echo Carbon::now(); //2016-10-14 20:21:20 ?>
Si vous souhaitez utiliser un fuseau horaire différent , vous devez passer un fuseau horaire valide en paramètre :
// 直接使用字符串 echo Carbon::now('Europe/London'); //2016-10-14 20:21:20 // 或者 echo Carbon::now(new DateTimeZone('Europe/London'));
En plus de now()
, des fonctions statiques telles que today()
, tomorrow()
et yesterday()
sont également fournis. Cependant, leurs heures sont toutes 00:00:00 :
echo Carbon::now(); // 2016-10-14 15:18:34 echo Carbon::today(); // 2016-10-14 00:00:00 echo Carbon::tomorrow('Europe/London'); // 2016-10-14 00:00:00 echo Carbon::yesterday(); // 2016-10-14 00:00:00
Le résultat de sortie ci-dessus est en fait. un objet date et heure de type Carbon :
Carbon {#179 ▼ +"date": "2016-06-14 00:00:00.000000" +"timezone_type": 3 +"timezone": "UTC" }
Pour obtenir la date sous forme de chaîne, vous pouvez utiliser le code suivant :
echo Carbon::today()->toDateTimeString(); echo Carbon::yesterday()->toDateTimeString(); echo Carbon::tomorrow()->toDateTimeString();
Convertir le type de date en chaîne
Comme mentionné ci-dessus, par défaut, la méthode de Carbon renvoie un objet date et heure. Bien qu'il s'agisse d'un objet, vous pouvez directement utiliser echo pour afficher le résultat grâce à la méthode magique __toString. Mais si vous souhaitez le convertir en chaîne, vous pouvez utiliser la méthode toDateString ou toDateTimeString :
echo Carbon::now()->toDateString(); //2016-10-14 echo Carbon::now()->toDateTimeString(); //2016-10-14 20:22:50
Analyse de la date
Vous pouvez également utiliser la méthode parse pour analyser des dates de n'importe quel ordre et type (le résultat est un objet datetime de type Carbon) :
echo Carbon::parse('2016-10-15')->toDateTimeString(); //2016-10-15 00:00:00 echo Carbon::parse('2016-10-15')->toDateTimeString(); //2016-10-15 00:00:00 echo Carbon::parse('2016-10-15 00:10:25')->toDateTimeString(); //2016-10-15 00:10:25 echo Carbon::parse('today')->toDateTimeString(); //2016-10-15 00:00:00 echo Carbon::parse('yesterday')->toDateTimeString(); //2016-10-14 00:00:00 echo Carbon::parse('tomorrow')->toDateTimeString(); //2016-10-16 00:00:00 echo Carbon::parse('2 days ago')->toDateTimeString(); //2016-10-13 20:49:53 echo Carbon::parse('+3 days')->toDateTimeString(); //2016-10-18 20:49:53 echo Carbon::parse('+2 weeks')->toDateTimeString(); //2016-10-29 20:49:53 echo Carbon::parse('+4 months')->toDateTimeString(); //2017-02-15 20:49:53 echo Carbon::parse('-1 year')->toDateTimeString(); //2015-10-15 20:49:53 echo Carbon::parse('next wednesday')->toDateTimeString(); //2016-10-19 00:00:00 echo Carbon::parse('last friday')->toDateTimeString(); //2016-10-14 00:00:00
Construire une date
Vous pouvez également construire une date en utilisant une année, un mois et un jour séparés :
$year = '2015'; $month = '04'; $day = '12'; echo Carbon::createFromDate($year, $month, $day); //2015-04-12 20:55:59 $hour = '02'; $minute = '15': $second = '30'; echo Carbon::create($year, $month, $day, $hour, $minute, $second); //2015-04-12 02:15:30 echo Carbon::createFromDate(null, 12, 25); // 年默认为当前年份
De plus, un fuseau horaire valide peut être transmis comme dernier paramètre.
Opérations de date
Les opérations de date peuvent être effectuées en ajoutant (augmentant) ou en soustrayant (soustrayant) pour suivre les unités à ajouter ou à soustraire. Par exemple, si vous souhaitez ajouter un nombre spécifié de jours à une date, vous pouvez utiliser la méthode addDays. De plus, une méthode de modification est fournie. Le format du paramètre est + ou - suivi de la valeur et de l'unité. Ainsi, si vous souhaitez ajouter une année à la date actuelle, vous pouvez passer +1 an :
echo Carbon::now()->addDays(25); //2016-11-09 14:00:01 echo Carbon::now()->addWeeks(3); //2016-11-05 14:00:01 echo Carbon::now()->addHours(25); //2016-10-16 15:00:01 echo Carbon::now()->subHours(2); //2016-10-15 12:00:01 echo Carbon::now()->addHours(2)->addMinutes(12); //2016-10-15 16:12:01 echo Carbon::now()->modify('+15 days'); //2016-10-30 14:00:01 echo Carbon::now()->modify('-2 days'); //2016-10-13 14:00:01
Comparaison de dates
Dans Carbon, vous pouvez utiliser les méthodes suivantes pour comparer les dates :
min – Renvoie la date minimale.
max – Renvoie la date maximale.
eq – Détermine si deux dates sont égales.
gt – Détermine si la première date est supérieure à la deuxième date.
lt – Détermine si la première date est plus petite que la deuxième date.
gte – Détermine si la première date est supérieure ou égale à la deuxième date.
lte – Détermine si la première date est inférieure ou égale à la deuxième date.
echo Carbon::now()->tzName; // America/Toronto $first = Carbon::create(2012, 9, 5, 23, 26, 11); $second = Carbon::create(2012, 9, 5, 20, 26, 11, 'America/Vancouver'); echo $first->toDateTimeString(); // 2012-09-05 23:26:11 echo $first->tzName; // America/Toronto echo $second->toDateTimeString(); // 2012-09-05 20:26:11 echo $second->tzName; // America/Vancouver var_dump($first->eq($second)); // bool(true) var_dump($first->ne($second)); // bool(false) var_dump($first->gt($second)); // bool(false) var_dump($first->gte($second)); // bool(true) var_dump($first->lt($second)); // bool(false) var_dump($first->lte($second)); // bool(true) $first->setDateTime(2012, 1, 1, 0, 0, 0); $second->setDateTime(2012, 1, 1, 0, 0, 0); // Remember tz is 'America/Vancouver' var_dump($first->eq($second)); // bool(false) var_dump($first->ne($second)); // bool(true) var_dump($first->gt($second)); // bool(false) var_dump($first->gte($second)); // bool(false) var_dump($first->lt($second)); // bool(true) var_dump($first->lte($second)); // bool(true)
Pour déterminer si une date est comprise entre deux dates, vous pouvez utiliser la méthode between(), la troisième la facultative Le paramètre spécifie si la comparaison peut être égale. La valeur par défaut est vraie :
$first = Carbon::create(2012, 9, 5, 1); $second = Carbon::create(2012, 9, 5, 5); var_dump(Carbon::create(2012, 9, 5, 3)->between($first, $second)); // bool(true) var_dump(Carbon::create(2012, 9, 5, 5)->between($first, $second)); // bool(true) var_dump(Carbon::create(2012, 9, 5, 5)->between($first, $second, false)); // bool(false)
De plus, certaines méthodes auxiliaires sont fournies, que vous pouvez comprendre grâce à leur noms. Ce que cela signifie :
$dt = Carbon::now(); $dt->isWeekday(); $dt->isWeekend(); $dt->isYesterday(); $dt->isToday(); $dt->isTomorrow(); $dt->isFuture(); $dt->isPast(); $dt->isLeapYear(); $dt->isSameDay(Carbon::now()); $born = Carbon::createFromDate(1987, 4, 23); $noCake = Carbon::createFromDate(2014, 9, 26); $yesCake = Carbon::createFromDate(2014, 4, 23); $overTheHill = Carbon::now()->subYears(50); var_dump($born->isBirthday($noCake)); // bool(false) var_dump($born->isBirthday($yesCake)); // bool(true) var_dump($overTheHill->isBirthday()); // bool(true) -> default compare it to today!
diffForHumans
"Il y a un mois" est mieux. que "il y a 30 jours" "Plus facile à lire. De nombreuses bibliothèques de dates proposent cette fonction commune. Une fois la date analysée, il existe quatre possibilités :
1. Lorsque l'heure comparée dépasse l'heure par défaut actuelle
Il y a 1 jour
Il y a 5 mois
2. Lors de l'utilisation de l'heure future et actuelle heure par défaut Comparer
Dans 1 heure
Dans 5 mois
3. Lorsque la valeur comparée dépasse une autre valeur
Il y a 1 heure
Il y a 5 mois
4、当比较的值在另一个值之后
1小时后
5月后
你可以把第二个参数设置为 true 来删除“前”、“距现在”等修饰语:diffForHumans(Carbon $other, true)
。
echo Carbon::now()->subDays(5)->diffForHumans(); // 5天前 echo Carbon::now()->diffForHumans(Carbon::now()->subYear()); // 1年后 $dt = Carbon::createFromDate(2011, 8, 1); echo $dt->diffForHumans($dt->copy()->addMonth()); // 1月前 echo $dt->diffForHumans($dt->copy()->subMonth()); // 11月后 echo Carbon::now()->addSeconds(5)->diffForHumans(); // 5秒距现在 echo Carbon::now()->subDays(24)->diffForHumans(); // 3周前 echo Carbon::now()->subDays(24)->diffForHumans(null, true); // 3周
本地化
可以在 app/Providers/AppServiceProvider.php 的 boot()
方法中添加下面的代码来设置全局本地化:
public function boot() { \Carbon\Carbon::setLocale('zh'); }
设置好之后,在输出时间的地方调用:
$article->created_at->diffForHumans();
类似的格式即可。
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
如何解决PHP基于DateTime类Unix时间戳与日期互转的问题
关于laravel 5.1下php artisan migrate的使用
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds





Méthode pour obtenir le code de retour lorsque l'envoi par e-mail de Laravel échoue. Lorsque vous utilisez Laravel pour développer des applications, vous rencontrez souvent des situations où vous devez envoyer des codes de vérification. Et en réalité ...

Laravel Schedule Tâche d'exécution de dépannage non réactif Lorsque vous utilisez la planification des tâches de calendrier de Laravel, de nombreux développeurs rencontreront ce problème: Schedule: Exécuter ...

La méthode de traitement de l'échec de l'e-mail de Laravel à envoyer le code de vérification est d'utiliser Laravel ...

Comment implémenter la fonction du tableau de Cliquez sur personnalisé pour ajouter des données dans DCATADMIN (Laravel-Admin) lors de l'utilisation de DCAT ...

L'impact du partage des connexions redis dans Laravel Framework et sélectionnez Méthodes Lors de l'utilisation de Laravel Framework et Redis, les développeurs peuvent rencontrer un problème: grâce à la configuration ...

Connexion de la base de données des locataires personnalisés dans le package d'extension multi-locataire Laravel Stancl / location Lors de la construction d'applications multi-locataires à l'aide du package d'extension multi-locataire Laravel Stancl / location, ...

Laravel - URL d'action - Laravel 5.7 introduit une nouvelle fonctionnalité appelée « URL d'action appelable ». Cette fonctionnalité est similaire à celle de Laravel 5.6 qui accepte la méthode string in action. L'objectif principal de la nouvelle syntaxe introduite par Laravel 5.7 est de diriger

Laravelelognent Model Retrieval: Faconttement l'obtention de données de base de données Eloquentorm fournit un moyen concis et facile à comprendre pour faire fonctionner la base de données. Cet article présentera en détail diverses techniques de recherche de modèles éloquentes pour vous aider à obtenir efficacement les données de la base de données. 1. Obtenez tous les enregistrements. Utilisez la méthode All () pour obtenir tous les enregistrements dans la table de base de données: usApp \ Modèles \ Post; $ poters = post :: all (); Cela rendra une collection. Vous pouvez accéder aux données à l'aide de Foreach Loop ou d'autres méthodes de collecte: ForEach ($ PostsAs $ POST) {echo $ post->
