2014-04-20 4 views
1

Quelle serait la manière idiomatique d'obtenir une durée entre deux dates ou d'obtenir une date future en fonction du courant. En ce moment j'utilise le code ci-dessous pour y parvenir.Façon idiomatique de créer une date ou une date future

yearSpan := time.Date(time.Now().Year()-1, time.Now().Month(), 
time.Now().Day(), time.Now().Hour(), time.Now().Minute(), time.Now().Second(), 
time.Now().Nanosecond(), time.UTC) 

yearDuration := time.Now().Sub(yearSpan) 

header.Add("Expires", time.Now().Add(futureDate).String()) 

Je suis à peu près partout dans les livres regardé et sites, mais je ne pouvais pas trouver un moyen idiomatiques la création d'une durée. Des réflexions sur la façon de refactoriser le code ci-dessus d'une meilleure façon?

Merci

Répondre

1

time.Duration est défini comme type Duration int64, donc basiquement que vous venez de faire les mathématiques de base pour obtenir la durée que vous voulez.

Par exemple (Play with it):

package main 

import (
    "fmt" 
    "time" 
) 

const avgYear = time.Hour * 24 * 365 

func main() { 
    fmt.Println("Hello, playground") 
    fmt.Println("Now", time.Now().String()) 
    fmt.Println("Last Year", time.Now().Add(-avgYear).String()) 
    fmt.Println("Next Year", time.Now().Add(avgYear).String()) 
} 
+1

Merci pour le tant :) répondre plus propre – ymg

+1

pour une raison quelconque j'ai complètement oublié que j'ai déjà utilisé 'time.sleep (time.Minute * 1)' * soupir * – ymg

+0

Je suis heureux d'avoir pu aider. – OneOfOne

Questions connexes