No, I haven't stumbled upon built-in function for converting seconds into arbitrary time format. Nevertheless, based on a similar question that was asked before, I've written a more custom format time function:
enum TimeFormat {
FORMAT_HOURS = 1 << 0,
FORMAT_MINUTES = 1 << 1,
FORMAT_SECONDS = 1 << 2,
FORMAT_DEFAULT = FORMAT_HOURS | FORMAT_MINUTES | FORMAT_SECONDS
}
func format_time(time, format = FORMAT_DEFAULT, digit_format = "%02d"):
var digits = []
if format & FORMAT_HOURS:
var hours = digit_format % [time / 3600]
digits.append(hours)
if format & FORMAT_MINUTES:
var minutes = digit_format % [time / 60]
digits.append(minutes)
if format & FORMAT_SECONDS:
var seconds = digit_format % [int(ceil(time)) % 60]
digits.append(seconds)
var formatted = String()
var colon = " : "
for digit in digits:
formatted += digit + colon
if not formatted.empty():
formatted = formatted.rstrip(colon)
return formatted
Where time
is in seconds, format
can have any combination of values from TimeFormat
enum, and digit_format
is a default string format for time digits. Returns formatted string time. For instance:
var time = format_time(469, FORMAT_MINUTES | FORMAT_SECONDS)