web-dev-qa-db-fra.com

Équivalent Javascript de php's strtotime ()?

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?

72
VJS

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?

45

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.

57
Arnaldo

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)

Mise à jour 2018:

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');
28
Westy92

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();
4
Rexford

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.

0
doc_id

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;

`

0
Adnane Ar