Golang : How to execute code at certain day, hour and minute?
Problem:
You want to execute certain code at a particular day, hour and minute only. Such as Monday, 10:30 AM. How to do that?
Solution:
Normally, this should be solved with cron
or scheduler
utility. However, no harm knowing how to do it at code level.
You will need time.Now()
, time.Clock()
and time.Weekday()
to retrieve the current day, hour, minute and second to determine if the condition is right to execute your code.
Here you go!
package main
import (
"fmt"
"os"
"time"
)
func main() {
now := time.Now()
day := now.Weekday()
hr, min, sec := now.Clock()
// only execute code on Monday 10:30 AM
fmt.Println("Code will only execute on every Monday, 10:30 AM")
// ignore second for now
if day == 1 && hr == 10 && min == 30 {
fmt.Println("Executing this portion of code to cure Monday blues...")
} else {
fmt.Printf("However, it is [%v], [%d]hour : [%d]minutes : [%d] seconds now.\n", day.String(), hr, min, sec)
fmt.Println("So, go back to work!")
os.Exit(0)
}
}
If the program runs on Monday 10:30AM, the output will be:
$ ./particularday
Code will only execute on every Monday, 10:30 AM
Executing this portion of code to cure Monday blues...
else the output will be:
Code will only execute on every Monday, 10:30 AM
However, it is [Monday], [10]hour : [46]minutes : [51] seconds now.
So, go back to work!
References:
https://www.socketloop.com/references/golang-time-time-clock-function-example
https://www.socketloop.com/tutorials/golang-how-to-get-year-month-and-day
See also : Golang : How to get year, month and day?
By Adam Ng
IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.
Advertisement
Tutorials
+10.1k Golang : Test a slice of integers for odd and even numbers
+13.5k Golang : How to get year, month and day?
+5.1k Golang : Check if a word is countable or not
+5.7k Golang : Detect words using using consecutive letters in a given string
+13.7k Golang : Get user input until a command or receive a word to stop
+19.1k Golang : Clearing slice
+7.3k Golang : How to iterate a slice without using for loop?
+10.7k Golang : Resolve domain name to IP4 and IP6 addresses.
+5.2k Golang : Customize scanner.Scanner to treat dash as part of identifier
+22.5k Golang : Convert Unix timestamp to UTC timestamp
+17.4k Golang : Check if IP address is version 4 or 6
+10.2k Golang : Compare files modify date example