J'essaye d'obtenir un objet Date js à partir d'une chaîne avec un format spécifique.
Ma chaîne date ressemble à ceci:
2019-04-22 05:30:11
J'essaye de faire de cette façon, mais je n'obtiens pas les résultats escomptés:
new_date = new Date(date.getTime() + i*30*60000) final_date_string = new_date.toString();
Après cela, je veux ajouter cet objet Date un time_delta de 30 minutes et le représenter au format chaîne, ce que je pense que cela devrait être fait de cette façon:
date_string = "2019-04-22 05:00:11" date = Date.parseDate(date_string, "YYYY-MM-DD HH:mm:ss")
Je veux que final_date_string
ressemble à ceci:
2019-04-22 05:00:11
3 Réponses :
Vous pouvez utiliser momentjs pour vos besoins, momentjs est une bibliothèque populaire pour le traitement DateTime
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.js"></script>
let date_string = "2019-04-22 05:00:11" let date = moment(date_string, "YYYY-MM-DD HH:mm:ss"); date.add(30, 'minutes'); final_date_string = date.format('YYYY-MM-DD HH:mm:ss') console.log(final_date_string);
let date_string = "2019-04-22 05:00:11" let date = moment(date_string, "YYYY-MM-DD HH:mm:ss"); date.add(30, 'minutes'); console.log(date.format('YYYY-MM-DD HH:mm:ss'));
Merci, c'était exactement ce que je voulais
Il n'y a pas besoin de jQuery (qui n'est pas pertinent et n'est utilisé nulle part dans la réponse) ni de moment.js pour une tâche aussi simple.
Essayez ce code:
let [y,M,d,h,m,s] = '2019-04-22 05:00:11'.split(/[- :]/); new Date(y,parseInt(M)-1,d,h,parseInt(m)+30,s);
Divisez la chaîne de date en fonction des séparateurs, puis convertissez-la en objet de date avec le changement d'heure dont vous avez besoin.
Merci pour l'excellent commentaire à @RobG pour l'erreur potentielle de la méthode Date.parse ()
.
Essayez d'utiliser la fonction getTime ()
de Vanilla JavaScript et ajoutez 30
secondes:
plusThirty: Mon Apr 22 2019 05:30:11 dateString: 2019-4-22 5:30:11
Sortie:
let date_string = "2019-04-22 05:00:11" let dateArray = date_string.split(/[- :]/); let plusThirty = new Date(dateArray[0], parseInt(dateArray[1]-1), parseInt(dateArray[2]) , dateArray[3], parseInt(dateArray[4]) + 30, dateArray[5]); console.log('plusThirty: ', plusThirty); let dateString = plusThirty.getFullYear() + "-" + (plusThirty.getMonth() + 1) + "-" + plusThirty.getDate() + " " + plusThirty.getHours() + ":" + plusThirty.getMinutes() + ":" + plusThirty.getSeconds(); console.log('dateString: ', dateString);
Pourquoi Date.parse donne-t-il des résultats incorrects? a>
@RobG Je suis désolé, mais pourquoi demandez-vous "Date.parse ()"? À mon avis, je n’ai pas utilisé la fonction ‘Date.parse ()’.
new Date (date_string)
utilise l'analyseur intégré. Vous ne devez pas utiliser l'analyseur intégré pour un format non standard, par exemple dans Safari new Date ("2019-04-22 05:00:11")
renvoie une date non valide. Vous ne devriez même pas utiliser if pour les formats standardisés car vous obtiendrez toujours des résultats inattendus pour certains formats.
@RobG Merci pour votre excellent commentaire! C'était vraiment utile! J'ai modifié ma réponse.