Comment comparer les deux de Carbone Horodateurs?
J'ai deux horodateurs, edited_at que j'ai créé et created_at (Laravel est)...
Dans la base de données, à la fois de type timestamp et la valeur par défaut 0000-00-00 00:00:00... Mais
var_dump(edited_at variable)
est de donner de la chaîne. Alors que var_dump(created_at variable)
est l'objet de Carbone. Quel est le problème avec ces horodateurs?
Je dois comparer les deux après la conversion en entier en utilisant le format('U'). Je ne peux appeler cette méthode sur le Carbone de l'Objet. Comment puis-je le faire?
- Exactement ce que vous souhaitez comparer? voulez-vous savoir ce qui est vieux ou plus récent?
- oui, je veux campare antérieure/postérieure
- carbon.nesbot.com/docs/#api-comparison
Vous devez vous connecter pour publier un commentaire.
D'abord, Éloquent convertit automatiquement c'est horodateurs (
created_at
,updated_at
) en carbone des objets. Vous pouvez simplement utiliserupdated_at
pour obtenir cette fonctionnalité sympathique, ou spécifieredited_at
dans votre modèle dans la$dates
propriété:Maintenant, revenons à votre question. Le carbone a un tas de fonctions de comparaison:
eq()
est égal àne()
pas égalegt()
plus degte()
supérieure ou égale àlt()
moins delte()
inférieure ou égale àUtilisation:
$date1->toDateString() == $date2->toDateString()
null
en PHPnull
au lieu d'un objet de Carbone, et vous obtiendrezcall to a member function lt() on null
.De carbone a un tas de fonctions de comparaison mnémonique noms:
Utilisation:
si vous n'êtes pas sûr de ce que la version Carbone, vous êtes sur, exécutez cette
D'abord de convertir le timestamp l'aide de l'éloquent fonctionnalités, comme décrit dans cette réponse.
Alors vous pouvez simplement utiliser le Carbone est
min()
oumax()
fonction de comparaison. Par exemple:$dt1 = Carbon::create(2012, 1, 1, 0, 0, 0);
$dt2 = Carbon::create(2014, 1, 30, 0, 0, 0);
echo $dt1->min($dt2);
Ce sera
echo
le moindre de ces deux dates, qui dans ce cas est$dt1
.Voir http://carbon.nesbot.com/docs/
s'étendant sur @lukasgeiter réponse, les méthodes
eq()
,ne()
,gt()
,gte()
,lt()
,lte()
pas il suffit de comparer lesday
mais il aussi regarder latime
ettimezone
Fuseau horaire peut être ajustée
Carbon::parse($stringDate, new DateTimeZone('Asia/Dubai'))
de comparer seulement le jour
je ne pouvais pas utiliser ces méthodes, espérons que cela aide quelqu'un d'autre.