2017-07-25 5 views
1

Je dois envoyer une valeur de date au serveur au format ISO "YYYY-MM-DDTHH:mm:ss.SSS[Z]" Je n'ai pas besoin des détails de l'heure, donc je les mets à zéro.Formatage d'une valeur Date prédéfinie au format ISO en JavaScript

Pour que j'utilise le code ci-dessous

var today = new Date(); 
var todayWithTimeAsZero = new Date(today.getFullYear(), today.getMonth(), today.getDate(), 0, 0, 0); 

Je reçois todayWithTimeAsZero comme Tue Jul 25 2017 22:06:03 GMT+0530 (India Standard Time)

Maintenant, comment puis-je convertir cette date dans un format ISO. J'ai fait des recherches partout mais pas de chance.

J'ai essayé var day = todayWithTimeAsZero.toISOString(); mais cela crée un nouvel objet date avec les valeurs de temps remplies comme 2017-07-24T18:30:00.000Z. Aussi, j'ai des moments dans mon projet peut être d'une certaine façon je peux l'utiliser.

+0

Quel est le problème avec todayWithTimeAsZero.toISOString() ;? –

+0

Il met à jour les zéros avec les nouvelles valeurs de temps. – underdog

Répondre

1

Avec moment.js vous pouvez obtenir la date actuelle comme UTC, puis définissez les valeurs de temps à zéro et obtenir la chaîne ISO:

moment() // current date 
.utc() // convert to UTC 
.hours(0).minutes(0).seconds(0).milliseconds(0) // set time values to zero 
.toISOString() // format to ISO8601 

La valeur de la chaîne formatée est 2017-07-25T00:00:00.000Z.


Vous pouvez également utiliser les méthodes setUTCxxx de Date:

var today = new Date(); 
today.setUTCHours(0); 
today.setUTCMinutes(0); 
today.setUTCSeconds(0); 
today.setUTCMilliseconds(0); 

today.toISOString() sera 2017-07-25T00:00:00.000Z.

+1

Vous pouvez remettre à zéro l'heure en une seule fois: 'today.setUTCHours (0,0,0,0)'. – RobG

1

Si vous créez une date puis zéro l'heure UTC et obtenez juste la date, ce sera une date différente de la date locale pour la période du décalage horaire. Pour quelqu'un en UTC + 1000, la date UTC est hier jusqu'à 10h00. Pour les utilisateurs qui sont UTC-0600, ce sera "demain" après 18h00 (18h00).

Quoi qu'il en soit, sans bibliothèque, vous pouvez faire:

var d = new Date(); 
 
d.setUTCHours(0,0,0,0); 
 
console.log(d.toISOString());