En PHP, vous pouvez facilement convertir une description textuelle date/heure en anglais en une date appropriée avec strtotime()
.
Y a-t-il quelque chose de similaire en Javascript?
J'ai trouvé cet article et essayé le tutoriel. En gros, vous pouvez utiliser le constructeur de date pour analyser une date, puis écrivez les secondes à partir de la méthode getTime()
var d=new Date("October 13, 1975 11:13:00");
document.write(d.getTime() + " milliseconds since 1970/01/01");
Est-ce que ça marche?
Oui, ça l'est. Et il est pris en charge dans tous les principaux navigateurs:
var ts = Date.parse("date string");
La seule différence est que cette fonction renvoie des millisecondes au lieu de secondes, vous devez donc diviser le résultat par 1000.
Vérifiez quels formats valides peuvent être analysés par JavaScript.
Découvrez this implémentation de strtotime () de PHP en JavaScript!
J'ai trouvé que cela fonctionne à l'identique de PHP pour tout ce que je lui ai jeté.
Mise à jour: cette fonction selon la version 1.0.2 ne peut pas gérer ce cas:
'2007:07:20 20:52:45'
(Notez le séparateur:
pour l'année et le mois)
Ceci est maintenant disponible en tant que module npm
! Simplement npm install locutus
et ensuite dans votre source:
var strtotime = require('locutus/php/datetime/strtotime');
Je jalous le strtotime () en php, mais je fais le mien en javascript en utilisant moment. Pas aussi doux que celui de php, mais fait le tour proprement aussi.
// first day of the month
var firstDayThisMonth = moment(firstDayThisMonth).startOf('month').toDate();
Allez en arrière en utilisant les fonctions subtract()
et add()
avec les fonctions endOf()
et startOf()
:
// last day of previous month
var yesterMonthLastDay = moment(yesterMonthLastDay).subtract(1,'months').endOf('month').toDate();
Peu de modules offrent un comportement similaire, mais pas exactement comme strtotime de PHP. Parmi quelques alternatives, j'ai trouvé date-util qui donne les meilleurs résultats.
Peut-être que vous pouvez exploiter un exemple de fonction comme:
function strtotime(date, addTime){
let generatedTime=date.getTime();
if(addTime.seconds) generatedTime+=1000*addTime.seconds; //check for additional seconds
if(addTime.minutes) generatedTime+=1000*60*addTime.minutes;//check for additional minutes
if(addTime.hours) generatedTime+=1000*60*60*addTime.hours;//check for additional hours
return new Date(generatedTime);
}
let futureDate = strtotime(new Date(), {
hours: 1, //Adding one hour
minutes: 45 //Adding fourty five minutes
});
document.body.innerHTML = futureDate;
`