- Trending Categories
- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- MS Excel
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP
- Physics
- Chemistry
- Biology
- Mathematics
- English
- Economics
- Psychology
- Social Studies
- Fashion Studies
- Legal Studies

- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who

# Golang Program to Calculate Difference Between Two Time Periods

In this tutorial, we will write a golang programs to calculate the difference between two time periods given in the following programs. To get the time difference between two time periods we can either use a library function or can create a separate user-defined function to achieve the results.

## Method 1: Calculate the Difference between Two Time Periods using Internal Function

In this method, we will write a go language program to find the difference between time periods using pre-defined functions in go programming language.

### Syntax

func (t Time) Sub(u Time) Duration

The sub() function in go is used to get the difference between two dates. In this function the first two parameters i.e., t and u are date values and this function returns the difference between two values in hours, minutes, and seconds.

### Algorithm

**Step 1** − First, we need to import the fmt and time. The time package allows us to use other predefined packages like time.Date().

**Step 2** − Start the main() function.

**Step 3** − Initialize firstDate and secondDate variables by passing the dates and times in time.Date() function in the order of yy/mm/dd/hrs//min//sec

**Step 4** − Find the difference between the given dates using Sub() function this function takes the second date as an argument and calculates the required difference.

**Step 5** − Print the result on the screen in various formats.

**Step 6** − We can print the years, days, months, weeks, hours, second, milliseconds, etc.

### Example

Golang program to calculate the difference between two time periods using internal function

package main import ( "fmt" "time" ) func main() { firstDate := time.Date(2022, 4, 13, 3, 0, 0, 0, time.UTC) secondDate := time.Date(2010, 2, 12, 6, 0, 0, 0, time.UTC) difference := firstDate.Sub(secondDate) fmt.Println("The difference between dates", firstDate, "and", secondDate, "is: ") fmt.Printf("Years: %d\n", int64(difference.Hours()/24/365)) fmt.Printf("Months: %d\n", int64(difference.Hours()/24/30)) fmt.Printf("Weeks: %d\n", int64(difference.Hours()/24/7)) fmt.Printf("Days: %d\n", int64(difference.Hours()/24)) fmt.Printf("Hours: %.f\n", difference.Hours()) fmt.Printf("Minutes: %.f\n", difference.Minutes()) fmt.Printf("Seconds: %.f\n", difference.Seconds()) fmt.Printf("Nanoseconds: %d\n", difference.Nanoseconds()) }

### Output

The difference between dates 2022-04-13 03:00:00 +0000 UTC and 2010-02-12 06:00:00 +0000 UTC is: Years: 12 Months: 148 Weeks: 634 Days: 4442 Hours: 106629 Minutes: 6397740 Seconds: 383864400 Nanoseconds: 383864400000000000

## Method 2: Calculate the Difference between Two Time Periods using a User-Defined Function

In this method, we will create a different function to calculate the difference between the two provided dates. The function will take the two dates as arguments and return the respective result.

### Algorithm

**Step 1** − First, we need to import the fmt and time packages. The time package allows us to use other predefined functions like time.Date().

**Step 2** − Create the leapYear() function to calculate the number of leap years between the two dates.

**Step 3** − Also create the getDifference() to get the difference between date and time. getDifference() function returns the days, hours, minutes, and seconds.

**Step 4** − Start the main() function.

**Step 5** − Initialize date1 and date2 variables by passing the dates and times in time.Date() function in the order of yy/mm/dd/hrs//min//sec.

**Step 6** − Swap the two dates if date1 occurs after date2.

**Step 7** − Call the getDifference() by passing the two dates as arguments to the function.

**Step 8** − Store the result obtained by the function in a different variable and print them on the screen in different formats using fmt.Println() function.

### Example

Golang program to calculate the difference between two time periods using a user-defined function

package main import ( "fmt" "time" ) func leapYears(date time.Time) (leaps int) { y, m, _ := date.Date() if m <= 2 { y-- } leaps = y/4 + y/400 - y/100 return leaps } func getDifference(a, b time.Time) (days, hours, minutes, seconds int) { monthDays := [12]int{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31} y1, m1, d1 := a.Date() y2, m2, d2 := b.Date() h1, min1, s1 := a.Clock() h2, min2, s2 := b.Clock() totalDays1 := y1*365 + d1 for i := 0; i < (int)(m1)-1; i++ { totalDays1 += monthDays[i] } totalDays1 += leapYears(a) totalDays2 := y2*365 + d2 for i := 0; i < (int)(m2)-1; i++ { totalDays2 += monthDays[i] } totalDays2 += leapYears(b) days = totalDays2 - totalDays1 hours = h2 - h1 minutes = min2 - min1 seconds = s2 - s1 if seconds < 0 { seconds += 60 minutes-- } if minutes < 0 { minutes += 60 hours-- } if hours < 0 { hours += 24 days-- } return days, hours, minutes, seconds } func main() { date1 := time.Date(2020, 4, 27, 23, 35, 0, 0, time.UTC) date2 := time.Date(2018, 5, 12, 12, 43, 23, 0, time.UTC) if date1.After(date2) { date1, date2 = date2, date1 } days, hours, minutes, seconds := getDifference(date1, date2) fmt.Println("The difference between dates", date1, "and", date2, "is: ") fmt.Printf("%v days\n%v hours\n%v minutes\n%v seconds", days, hours, minutes, seconds) }

### Output

The difference between dates 2018-05-12 12:43:23 +0000 UTC and 2020-04-27 23:35:00 +0000 UTC is: 716 days 10 hours 51 minutes 37 seconds

## Conclusion

We have successfully compiled and executed a go language program to get the difference between two time periods along with examples. In the first example, we used internal functions and in the second example, we used a user-defined function to obtain the results.

- Related Articles
- Java Program to Calculate difference between two Time Periods
- C Program to calculate the difference between two time periods
- Golang program to calculate difference between two slices
- Difference between two given time periods in C++
- C++ Program to Calculate Difference Between Two Time Period
- Golang program to calculate the symmetric difference between two slices
- How to calculate time difference between two times or dates?
- Java Program to Calculate the difference between two sets
- Python Program to Calculate the Symmetric Difference Between Two Lists
- Golang program to calculate union of two slices
- How can we calculate the difference between two time values in MySQL?
- Golang Program to Calculate the intersection of two Slices
- Java Program to get the difference between two time zones by seconds
- C program to calculate distance between two points
- Swift Program to Calculate Distance Between Two Points