2017-07-19 2 views
2

J'essaie d'ajouter un script groovy dans SoapUI pour trouver la date de demain en utilisant next() en date du jour. Je reçois la date prévue pour toutes les autres dates, sauf si la date est 19.groovy next() date numéro

def TodaysDate = new java.util.Date().format("yyyy-MM-dd") 
log.info ">>>>>>>>>> TodaysDate="+TodaysDate 
log.info TodaysDate.next() 

Sortie:

Mer 19 juillet 14:34:29 EDT 2017: INFO: >>> >>>>>>> DateDuDour = 19/07/2017
Mer 19 juillet 14:34:29 EDT 2017: INFO: 01/07/2017:

J'ai essayé aussi.

def Today = new java.text.SimpleDateFormat("yyyy-MM-dd").format(new Date()) 
log.info Today 
NextDay = Today.next() 
log.info NextDay 

Sortie:

Mer 19 juillet 14:43:38 EDT 2017: INFO: 19/07/2017
Mer 19 juillet 14:43:38 EDT 2017: INFO: 2017- 07-1:

Ce next() iterator fonctionne très bien pour d'autres dates. Pouvez-vous m'aider à comprendre ce que je fais incorrect ici?

Répondre

2

La méthode format() renvoie un String. Et quand vous appelez next() sur un String, il increments the last character. Ainsi, le caractère 9is incremented à la valeur unicode suivante devient :.

Si vous voulez que vos dates dans un format spécifique, d'abord vous appelez next() dans un objet Date, alors vous formatez:

def TodaysDate = new java.util.Date() 
log.info ">>>>>>>>>> TodaysDate="+TodaysDate.format("yyyy-MM-dd") 
log.info TodaysDate.next().format("yyyy-MM-dd") 

La imprimera TodaysDate=2017-07-19 et la prochaine date comme 2017-07-20.

0

Peut-être que cela vaut la peine d'utiliser TimeCategory dans votre cas? Jetez un oeil à cet exemple de code simple:

import groovy.time.TimeCategory 

use (TimeCategory) { 
    println new Date() + 1.day 
} 

Cela fonctionne très bien avec n'importe quelle date. Testez-le avec la date d'aujourd'hui (2017-07-19) - l'ajout 1.day vous donnera 2017-07-20. J'espère que cela aide.

+2

Même sans TimeCategory, 'new Date() + 1' ajoutera un jour à la date. TimeCategory est utile lorsque vous souhaitez ajouter des unités non-day, cependant. – bdkosher