Deniz Dogan a écrit : > Hello. > I need help with a small problem I'm having. > > I want to make a function which takes an integer representing some time > in milliseconds and returns the same time but formatted as > "hours:minutes:seconds,milliseconds" with leading zeros whenever possible. > > E.g. I input 185804 to the function and it returns 00:03:05,804. The > function I'm using now is defined as: > > def millisToFormat(millis): > try: > hours = millis / 3600000 > mins = (millis - hours * 3600000) / 60000 > secs = (millis - hours * 3600000 - mins * 60000) / 1000 > millis = millis - hours * 3600000 - mins * 60000 - secs * 1000 > hours = str(hours) > mins = str(mins) > secs = str(secs) > millis = str(millis) > if len(hours) == 1: > hours = "0"+hours > if len(mins) == 1: > mins = "0"+mins > if len(secs) == 1: > secs = "0"+secs > if len(millis) < 3: > millis = (len(millis) - 3) * "0" + millis > return str(hours) + ":" + str(mins) + ":" + str(secs) + "," + > str(millis) > except ValueError: > return -1 > > Note that I am very new to Python and the language I have been using > most prior to this is Java.
A shorter solution using % operator in Python: >>> def millisToFormat(millis): ... hours = millis / 3600000 ... mins = (millis - hours * 3600000) / 60000 ... secs = (millis - hours * 3600000 - mins * 60000) / 1000 ... millis = millis - hours * 3600000 - mins * 60000 - secs * 1000 ... return "%(hours)02d:%(mins)02d:%(secs)02d,%(millis)03d"%locals() ... >>> millisToFormat(185804 ) '00:03:05,804' See chapter "3.6.2 String Formatting Operations" in the Python Library Reference. http://docs.python.org/lib/typesseq-strings.html A+ Laurent. -- http://mail.python.org/mailman/listinfo/python-list