# Golang : Calculate how many weeks left to go in a given year

Here is a simple tutorial on how to calculate the number of weeks in a given year and figure out how many more weeks left to go. A year can have either 52 or 53 weeks and care must be taken to properly get the last day of the last week in a year to get the correct number of weeks.

Here you go!

`````` package main

import (
"fmt"
"time"

"github.com/jinzhu/now"
)

func main() {
tn := time.Now() // change this to calculate different year

fmt.Println("Now : ", tn.Format(time.ANSIC))

// this week is which number in the current calender year
_, currentWeekNumber := tn.ISOWeek()
fmt.Println("Current week number : ", currentWeekNumber)

// calculate the last week number for the current year
last := now.EndOfYear()

lastWeekOfTheYear := now.New(last).BeginningOfWeek()

fmt.Println("The day of the final week : ", lastWeekOfTheYear.Format(time.ANSIC))
_, lastWeekNumber := lastWeekOfTheYear.ISOWeek()

// verify at https://www.epochconverter.com/weeks/2019
fmt.Println("For the year", tn.Year(), ". It has", lastWeekNumber, "weeks.")

weeksLeft := lastWeekNumber - currentWeekNumber

fmt.Println("Hence, there are", weeksLeft, "weeks left to go.")
}
``````

Output:

Now : Thu Jun 13 18:14:04 2019

Current week number : 24

The day of the final week : Sun Dec 29 00:00:00 2019

For the year 2019 . It has 52 weeks.

Hence, there are 28 weeks left to go.

Happy coding!

References :

https://www.socketloop.com/references/golang-time-time-isoweek-function-example

https://www.epochconverter.com/weeks/2019

https://github.com/jinzhu/now