update(README):Clarify `user` directory
[BK-2020-03.git] / unitproc / bktemp-timeDuration
index 0b20c8808b53357920ea43148385def652f3ad33..1db408b8c101a203a026a03ab16486b2544a23f8 100644 (file)
@@ -10,7 +10,7 @@ timeDuration(){
     # Ref/Attrib: ISO-8601:2004(E), §4.4.4.2 Representations of time intervals by duration and context information
     # Note: "1 month" ("P1M") is assumed to be "30 days" (see ISO-8601:2004(E), §2.2.1.2)
     # Usage: timeDuration [1:seconds] ([2:precision])
     # Ref/Attrib: ISO-8601:2004(E), §4.4.4.2 Representations of time intervals by duration and context information
     # Note: "1 month" ("P1M") is assumed to be "30 days" (see ISO-8601:2004(E), §2.2.1.2)
     # Usage: timeDuration [1:seconds] ([2:precision])
-    # Version: 1.0.4
+    # Version: 1.0.5
     # Input: arg1: seconds as base 10 integer >= 0  (ex: 3601)
     #        arg2: precision level (optional; default=2)
     # Output: stdout: ISO-8601 duration string (ex: "P1H1S", "P2Y10M15DT10H30M20S")
     # Input: arg1: seconds as base 10 integer >= 0  (ex: 3601)
     #        arg2: precision level (optional; default=2)
     # Output: stdout: ISO-8601 duration string (ex: "P1H1S", "P2Y10M15DT10H30M20S")
@@ -18,7 +18,7 @@ timeDuration(){
     #         exit code 1: error_input
     #         exit code 2: error_unknown
     # Example: 'timeDuration 111111 3' yields 'P1DT6H51M'
     #         exit code 1: error_input
     #         exit code 2: error_unknown
     # Example: 'timeDuration 111111 3' yields 'P1DT6H51M'
-    # Depends: date 8 (gnucoreutils), yell,
+    # Depends: date 8, bash 5, yell,
     local argSeconds argPrecision precision returnState remainder
     local fullYears fullMonths fullDays fullHours fullMinutes fullSeconds
     local hasYears hasMonths hasDays hasHours hasMinutes hasSeconds
     local argSeconds argPrecision precision returnState remainder
     local fullYears fullMonths fullDays fullHours fullMinutes fullSeconds
     local hasYears hasMonths hasDays hasHours hasMinutes hasSeconds
@@ -86,7 +86,7 @@ timeDuration(){
     if [[ $fullDays -gt 0 ]]; then hasDays="true"; else hasDays="false"; fi
     if [[ $fullHours -gt 0 ]]; then hasHours="true"; else hasHours="false"; fi
     if [[ $fullMinutes -gt 0 ]]; then hasMinutes="true"; else hasMinutes="false"; fi
     if [[ $fullDays -gt 0 ]]; then hasDays="true"; else hasDays="false"; fi
     if [[ $fullHours -gt 0 ]]; then hasHours="true"; else hasHours="false"; fi
     if [[ $fullMinutes -gt 0 ]]; then hasMinutes="true"; else hasMinutes="false"; fi
-    if [[ $fullSeconds -gt 0 ]]; then hasSeconds="true"; else hasSeconds="false"; fi
+    if [[ $fullSeconds -ge 0 ]]; then hasSeconds="true"; else hasSeconds="false"; fi
     
     ## Determine which fields to display (see ISO-8601:2004 §4.4.3.2)
     witherPrecision="false"
     
     ## Determine which fields to display (see ISO-8601:2004 §4.4.3.2)
     witherPrecision="false"
@@ -206,6 +206,7 @@ echo "Precision 3 duration:$(timeDuration "$(date +%s)" 3)"
 echo "Precision 2 duration:$(timeDuration "$(date +%s)" 2)"
 echo "Precision 1 duration:$(timeDuration "$(date +%s)" 1)"
 echo "Precision 6 duration:$(timeDuration $((60+60*60+60*60*24+60*60*24*30+60*60*24*365 - (60+60*60+60*60*24+60*60*24*30) )) 6)"
 echo "Precision 2 duration:$(timeDuration "$(date +%s)" 2)"
 echo "Precision 1 duration:$(timeDuration "$(date +%s)" 1)"
 echo "Precision 6 duration:$(timeDuration $((60+60*60+60*60*24+60*60*24*30+60*60*24*365 - (60+60*60+60*60*24+60*60*24*30) )) 6)"
+echo "Zero seconds:$(timeDuration "0")";
 echo "Parsing argument provided to script:\"$*\""; timeDuration "$@"
 #==END sample code==
 
 echo "Parsing argument provided to script:\"$*\""; timeDuration "$@"
 #==END sample code==