trzeba konwertować weeksToAdd
w time.Duration
:
myDate.Add(time.Hour * 24 * 7 * time.Duration(weeksToAdd))
w Go, aliasy typu nie mogą być stosowane zamiennie, chociaż time.Duration
jest technicznie int64
.
Również tutaj, mimo że stałe numeryczne 24 i 7 nie są jawnie wpisane, mogą być nadal używane tak jak są, zobacz https://blog.golang.org/constants, aby uzyskać szczegółowe wyjaśnienie.
Zobacz przykład http://play.golang.org/p/86TFFlixWj dla bieżącego przykładu.
Jak wspomniano w komentarzach i innej odpowiedzi, użycie time.AddDate()
jest lepsze niż podczas pracy trwającej dłużej niż 24 godziny, ponieważ time.Duration
zasadniczo reprezentuje nanosekundy. Pracując z dniami, tygodniami, miesiącami i latami, należy zachować ostrożność ze względu na takie kwestie, jak czas letni, lata przestępne i potencjalnie kilka sekund przestępnych.
Dokumentacja time.Duration
rodzaju i przynależne stałe reprezentujące jednostki podkreślić tę kwestię (https://golang.org/pkg/time/#Duration):
Nie ma definicji dla jednostek dzień lub większe, aby uniknąć nieporozumień poprzek przejścia strefy czasu letniego.
Time.Add nie działa w miejscu. –
Cóż, to prawda, i naprawiłem ten przykład, ale poza tym chodzi o to. – SirDarius
dzięki za wyjaśnienie, dlaczego mogę używać 24 i 7. To było moim następnym pytaniem. –