Travailler sur une application dans laquelle je capture certains champs de saisie à l'aide du sélecteur de date bootstrap. J'affiche le format au format jj / mm / aa à l'utilisateur, ce qui fonctionne bien. Sur le backend (construit en PHP Laravel), je dois le convertir au format aa-mm-jj qui est le format requis lors du stockage du champ de date dans l'API.
Dans le contrôleur lorsque je vide les données, j'obtiens 28 / 01/2019 mais quand je le convertis, j'obtiens 1970-01-01. Quel pourrait être le problème?
Balisage
public function validateDate(Request $request){ //dd($request->dob); //28/02/2019 after dd() above //Convert $dobCv = date("Y-d-m", strtotime($request->dob)); dd($dobCv); //1970-01-01 after dd() above }
Javascript Logic (Bootstrap datpicker)
var maxBirthdayDate = new Date(); maxBirthdayDate.setFullYear( maxBirthdayDate.getFullYear() - 18 ); maxBirthdayDate.setMonth(11,31); $( function() { $( "#dob" ).datepicker({ changeMonth: true, changeYear: true, dateFormat: 'dd/mm/yy', maxDate: maxBirthdayDate, yearRange: '1900:'+maxBirthdayDate.getFullYear(), }); });
Logique du contrôleur
<div class="form-line registar love {{ $errors->has('dob') ? ' has-error' : '' }}"> <input type="text" placeholder="Date of Birth *" class="form-input dateTextBox" name="dob" id="dob" value="{{isset($user->dob) ? $user->dob : old('dob') }}" required> </div>
5 Réponses :
Pourquoi n'utilisez-vous pas Laravel build dans Carbon
$ date = Carbon :: createFromFormat ('j / m / Y', $ date);
Ensuite, vous pouvez faire $ date-> toDateTimeString ();
ou tout ce que vous voulez faire avec l'objet de date Carbon
J'ai essayé et j'obtiens cette erreur (1/1) InvalidArgumentException Données inattendues trouvées. Données inattendues trouvées. Données de fin
Il semble que le format que vous fournissez n'est pas correct, vous pouvez vérifier ici comment composer le bon format php. net / manual / en / function.date.php
Votre date est-elle avec une année à 4 chiffres ou avec une année à 2 chiffres? s'il contient 2 chiffres, changez le Y
majuscule en y
Encodez-le au format json et envoyez-le au contrôleur
Vous pouvez simplement utiliser Carbon:
use Carbon\Carbon;
Et n'oubliez pas l'importation:
$dobCv = Carbon::createFromFormat('d/m/Y', $request->dob)->format('Y-m-d');
, J'ai essayé votre suggestion mais j'obtiens cette erreur DateTime :: __ construct (): Impossible d'analyser la chaîne de temps (27/02/2019) à la position 0 (2): caractère inattendu , la date en cours d'adoption le 27/01/2019
Changer le texte du type de saisie en date peut vous aider.
par exemple:
Vous avez le problème car la barre oblique (/) signifie le formatage américain M / D / Y en strtotime
et dans votre exemple 28/02/2019
28 est le mois. Ainsi, strtotime
renvoie false
. Je vous recommande d'utiliser la bibliothèque Carbon
comme cela a été dit ci-dessus ou de changer /
avec -
si vous voulez votre chemin:
$ dobCv = date ("Y-j-m", strtotime (str_replace ('/', '-', $ request-> dob)));
Veuillez publier les données envoyées à partir du
formulaire
et votreformat attendu
que la date doit être convoquée Par exemple FROM'2018 -01-31 23:32:06 ';
TO:31 janvier 2018 23:32