Durée de temps Groovy

Salut j'essaie de calculer la différence (durée) entre deux fois dans Groovy. par exemple,

start = "2010-10-07T22:15: 33.110+01:00" stop = "2010-10-07T22:19:52.356+01:00"

idéalement, je voudrais que la durée soit retournée en heures, Minutes, secondes, millisecondes.

quelqu'un Peut s'il vous plaît aider. J'ai essayé D'utiliser les classes de durée de Groovy mais je n'ai pas pu faire de progrès.

merci de votre aide.

20
demandé sur Carl Bourne 2010-10-12 00:50:17

2 réponses

si vous voulez juste trouver la différence entre deux fois que vous créez vous-même (par exemple pour voir combien de temps il faut pour exécuter quelque chose) vous pouvez utiliser:

import groovy.time.*

def timeStart = new Date()
// Some code you want to time
def timeStop = new Date()
TimeDuration duration = TimeCategory.minus(timeStop, timeStart)
println duration

si vous avez spécifiquement besoin de travailler avec les dates telles que fournies en chaîne ci-dessus. Essayez d'abord le format est un peu bizarre, en particulier le +01:00, qui est le fuseau horaire, je m'attends à ce qu'il soit +0100 pour le format de travail. Vous pourriez juste enlever le fuseau horaire que je viens de faire remplacer.

import groovy.time.*

def start = Date.parse("yyy-MM-dd'T'HH:mm:ss.SSSZ","2010-10-07T22:15:33.110+01:00".replace("+01:00","+0100"))
println start
def end = Date.parse("yyy-MM-dd'T'HH:mm:ss.SSSZ","2010-10-07T22:19:52.356+01:00".replace("+01:00","+0100"))
println end
TimeDuration duration = TimeCategory.minus(end, start)
println duration

Sorties

Thu Oct 07 15:15:33 MDT 2010
Thu Oct 07 15:19:52 MDT 2010
4 minutes, 19.246 seconds
43
répondu Demian 2010-10-13 18:51:37

je voudrais faire quelque chose comme ça

def elapsedTime(Closure closure){
    def timeStart = new Date()
    closure()
    def timeStop = new Date()
    TimeCategory.minus(timeStop, timeStart)
}

puis

TimeDuration timeDuration = elapsedTime { /*code you want to time*/ }
11
répondu DanieleDM 2014-07-23 08:29:30