@@ -8,59 +8,20 @@ import (
8
8
"strings"
9
9
)
10
10
11
- // SecToTime converts an amount of seconds to a human-readable string. E.g.
12
- // 66s -> 1 minute 6 seconds
13
- // 52410s -> 14 hours 33 minutes
14
- // 563418 -> 6 days 12 hours
15
- // 1563418 -> 2 weeks 4 days
16
- // 3937125s -> 1 month 2 weeks
17
- // 45677465s -> 1 year 6 months
18
- func SecToTime (durationVal any ) string {
11
+ // SecToHours converts an amount of seconds to a human-readable hours string.
12
+ // This is sutable for planning and managing timesheets.
13
+ func SecToHours (durationVal any ) string {
19
14
duration , _ := ToInt64 (durationVal )
20
15
21
16
formattedTime := ""
22
17
23
- // The following four variables are calculated by taking
24
- // into account the previously calculated variables, this avoids
25
- // pitfalls when using remainders. As that could lead to incorrect
26
- // results when the calculated number equals the quotient number.
27
- remainingDays := duration / (60 * 60 * 24 )
28
- years := remainingDays / 365
29
- remainingDays -= years * 365
30
- months := remainingDays * 12 / 365
31
- remainingDays -= months * 365 / 12
32
- weeks := remainingDays / 7
33
- remainingDays -= weeks * 7
34
- days := remainingDays
35
-
36
18
// The following three variables are calculated without depending
37
19
// on the previous calculated variables.
38
- hours := (duration / 3600 ) % 24
20
+ hours := (duration / 3600 )
39
21
minutes := (duration / 60 ) % 60
40
- seconds := duration % 60
41
22
42
- // Extract only the relevant information of the time
43
- // If the time is greater than a year, it makes no sense to display seconds.
44
- switch {
45
- case years > 0 :
46
- formattedTime = formatTime (years , "year" , formattedTime )
47
- formattedTime = formatTime (months , "month" , formattedTime )
48
- case months > 0 :
49
- formattedTime = formatTime (months , "month" , formattedTime )
50
- formattedTime = formatTime (weeks , "week" , formattedTime )
51
- case weeks > 0 :
52
- formattedTime = formatTime (weeks , "week" , formattedTime )
53
- formattedTime = formatTime (days , "day" , formattedTime )
54
- case days > 0 :
55
- formattedTime = formatTime (days , "day" , formattedTime )
56
- formattedTime = formatTime (hours , "hour" , formattedTime )
57
- case hours > 0 :
58
- formattedTime = formatTime (hours , "hour" , formattedTime )
59
- formattedTime = formatTime (minutes , "minute" , formattedTime )
60
- default :
61
- formattedTime = formatTime (minutes , "minute" , formattedTime )
62
- formattedTime = formatTime (seconds , "second" , formattedTime )
63
- }
23
+ formattedTime = formatTime (hours , "hour" , formattedTime )
24
+ formattedTime = formatTime (minutes , "minute" , formattedTime )
64
25
65
26
// The formatTime() function always appends a space at the end. This will be trimmed
66
27
return strings .TrimRight (formattedTime , " " )
0 commit comments