63 lines
1.6 KiB
Go
63 lines
1.6 KiB
Go
package main
|
|
|
|
import (
|
|
"bufio"
|
|
"fmt"
|
|
"os"
|
|
"regexp"
|
|
"time"
|
|
)
|
|
|
|
func ParseData(pointer *[]string) {
|
|
re := regexp.MustCompile(`\d+:\d+`)
|
|
timeStringLayout := "15:04"
|
|
dataLen := len(*pointer)
|
|
for i := 0; i < dataLen; i++ {
|
|
// address := &(*pointer)[i]
|
|
// fmt.Printf("Element %d: Value = %s, Address = %p\n", i, *address, address)
|
|
if i == 0 {
|
|
continue
|
|
}
|
|
|
|
// fmt.Println((*pointer)[i])
|
|
startTime := re.Find([]byte((*pointer)[i-1]))
|
|
startTimeString := string(startTime)
|
|
startTimeParsed, err := time.Parse(timeStringLayout, startTimeString)
|
|
if err != nil {
|
|
fmt.Println("Error parsing date:", err)
|
|
}
|
|
endTime := re.Find([]byte((*pointer)[i]))
|
|
endTimeString := string(endTime)
|
|
// fmt.Printf("%s - %s\n", startTime, endTime)
|
|
endTimeParsed, err := time.Parse(timeStringLayout, endTimeString)
|
|
if err != nil {
|
|
fmt.Println("Error parsing date:", err)
|
|
}
|
|
duration := endTimeParsed.Sub(startTimeParsed)
|
|
fmt.Printf("%s\t%s\n", duration, (*pointer)[i])
|
|
}
|
|
}
|
|
|
|
func main() {
|
|
// Create a new scanner to read from standard input
|
|
scanner := bufio.NewScanner(os.Stdin)
|
|
|
|
// Create var for string array with received data
|
|
var dataToParse []string
|
|
|
|
// Read each line from stdin
|
|
for scanner.Scan() {
|
|
line := scanner.Text()
|
|
// Process the line (for example, print it)
|
|
dataToParse = append(dataToParse, line)
|
|
}
|
|
|
|
// Check for errors during scanning
|
|
if err := scanner.Err(); err != nil {
|
|
fmt.Fprintln(os.Stderr, "Error reading from stdin:", err)
|
|
}
|
|
// for i := 0; i < len(dataToParse); i++ {
|
|
// fmt.Println(dataToParse[i])
|
|
// }
|
|
ParseData(&dataToParse)
|
|
}
|