web-dev-qa-db-fra.com

Supprimer les secondes / millisecondes de la date convertie en chaîne ISO

J'ai un objet de date que je veux

  1. supprimer les secondes/ou mettre à 0
  2. convertir en chaîne ISO
  3. Par exemple:

var date = new Date(); //Wed Mar 02 2016 16:54:13 GMT-0500 (EST) var stringDate = moment(date).toISOString(); //2016-03-02T21:54:13.537Z

Mais ce que je veux vraiment à la fin, c’est

stringDate = '2016-03-02T21:54:00.000Z'

24
tester123

Bien que ce soit facilement résolu avec javascript (voir la réponse de RobG), je voulais vous montrer la solution momentjs puisque vous avez tagué vos questions comme momentjs:

moment().seconds(0).milliseconds(0).toISOString();

Cela vous donne l'heure actuelle, sans secondes ni millisecondes.

Exemple de travail: http://jsbin.com/bemalapuyi/edit?html,js,output

À partir de la documentation: http://momentjs.com/docs/#/get-set/

29
jszobody

Il n’est pas nécessaire de disposer d’une bibliothèque, définissez simplement les secondes et les millisecondes sur zéro et utilisez la méthode intégrée toISOString :

var d = new Date();
d.setSeconds(0,0);
document.write(d.toISOString());

Remarque: toISOString n'est pas pris en charge par IE 8 et inférieur, il existe un pollyfil sur MDN .

30
RobG

Un peu tard ici mais maintenant vous pouvez:

var date = new Date();

cet obj a:

date.setMilliseconds(0);

et

date.setSeconds(0);

puis appelez toISOString() comme vous le faites et tout ira bien.

Aucun moment ou d'autres dép.

7
Jimmy Kane

Solutions javascript pures permettant d’éliminer les secondes et les millisecondes (c’est supprimer, et pas seulement 0). JSPerf indique que la deuxième fonction est plus rapide.

function getISOStringWithoutSecsAndMillisecs1(date) {
  const dateAndTime = date.toISOString().split('T')
  const time = dateAndTime[1].split(':')
  
  return dateAndTime[0]+'T'+time[0]+':'+time[1]
}

console.log(getISOStringWithoutSecsAndMillisecs1(new Date()))
 
function getISOStringWithoutSecsAndMillisecs2(date) {
  const dStr = date.toISOString()
  
  return dStr.substring(0, dStr.indexOf(':', dStr.indexOf(':')+1))
}

console.log(getISOStringWithoutSecsAndMillisecs2(new Date()))
2
ips

Vous pouvez utiliser la méthode startOf () dans moment.js pour obtenir ce que vous voulez.

Voici un exemple:

var date = new Date();

var stringDateFull = moment(date).toISOString();
var stringDateMinuteStart = moment(date).startOf("minute").toISOString();

$("#fullDate").text(stringDateFull);
$("#startOfMinute").text(stringDateMinuteStart);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.11.2/moment.js"></script>
<p>Full date: <span id="fullDate"></span></p>
<p>Date with cleared out seconds: <span id="startOfMinute"></span></p>
1
Sarhanis
let date = new Date();
date = new Date(date.getFullYear(), date.getMonth(), date.getDate());

J'espère que ça marche !!

0
Vishal Variyani