Hey Dan, I'm pretty sure this handler works. But it only does Days, Hours,Minutes and Seconds. I'm sure you can add to it. (human readable section)
Cheers, Tom -------------------------------------------------------------------------- *function* TimeDisplay HowMany,DisplayHow *if* DisplayHow = "Duration" *then* *//************************************************************** *if* AppStarterStackSettings["default"]["Time Unit"] = "seconds" *then* *return* round(HowMany / 1000,3) & "s" *else* *if* AppStarterStackSettings["default"]["Time Unit"] = "milliseconds" *then* *return* HowMany & "ms" *else* *if* AppStarterStackSettings["default"]["Time Unit"] = "microseconds" *then* *end* *if* *else* *if* DisplayHow = "Human Readable" *then* *//************************************************************** *local* final_output = "<d> days <hh>:<mm>:<ss>" *local* running_second_count *local* next_calculation *set* itemdelimiter to "." *-- we are looking at boths sides of the decimal place* *put* round(HowMany / 1000) into HowMany *-- convert to seconds* *// 86,400 seconds in an day* *// 3600 in an hour* *// 60 seonds in a minute* *// replace counts as you go* *-- days* *put* HowMany / 86400 into next_calculation *if* next_calculation < 1 *then* *put* HowMany into running_second_count *replace* "<d>" with "0" in final_output *else* *// how many days?* *replace* "<d>" with item 1 of next_calculation in final_output *put* (HowMany) - (item 1 of next_calculation * 86400) into running_second_count *end* *if* *-- hours* *put* running_second_count / 3600 into next_calculation *if* next_calculation < 1 *then* *replace* "<hh>" with "00" in final_output *else* *// how many hours?* *if* the number of characters in item 1 of next_calculation = 1 *then* *replace* "<hh>" with "0" & item 1 of next_calculation in final_output *else* *replace* "<hh>" with item 1 of next_calculation in final_output *end* *if* *put* (running_second_count) - (item 1 of next_calculation * 3600) into running_second_count *end* *if* *-- minutes* *put* running_second_count / 60 into next_calculation *if* next_calculation < 1 *then* *replace* "<mm>" with "00" in final_output *else* *// how many minutes?* *if* the number of characters in item 1 of next_calculation = 1 *then* *replace* "<mm>" with "0" & item 1 of next_calculation in final_output *else* *replace* "<mm>" with item 1 of next_calculation in final_output *end* *if* *put* (running_second_count) - (item 1 of next_calculation * 60) into running_second_count *end* *if* *-- seconds* *put* running_second_count into next_calculation *if* next_calculation < 1 *then* *replace* "<ss>" with "00" in final_output *else* *// how many minutes?* *if* the number of characters in item 1 of next_calculation = 1 *then* *replace* "<ss>" with "0" & next_calculation in final_output *else* *replace* "<ss>" with next_calculation in final_output *end* *if* *end* *if* *end* *if* *//************************************************************** *return* final_output *end* TimeDisplay --------------------------------------------------------------- On Mon, Nov 1, 2021 at 5:47 PM Dan Friedman via use-livecode < use-livecode@lists.runrev.com> wrote: > Anyone ever done a count up timer? For example, if we supply the seconds > of 1605553200, we want to display the number of years, months, days, hours, > minutes and seconds since that time. For example, "How long have you been > alive?". This needs to be precise – need to account for leap years, days > in month, etc. > > Save me!! :) > > -Dan > > _______________________________________________ > use-livecode mailing list > use-livecode@lists.runrev.com > Please visit this url to subscribe, unsubscribe and manage your > subscription preferences: > http://lists.runrev.com/mailman/listinfo/use-livecode > -- Tom Glod Founder & Developer MakeShyft R.D.A (www.makeshyft.com) Mobile:647.562.9411 _______________________________________________ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode