# Displaying time in human readable form

Posted by **Jiro Doke**,

Jiro's pick this week is `seconds2human` by Rody Oldenhuis.

There was a time when I obsessed over waitbars. Why is that? I'm not sure, but Ned has a few guesses. But one of the features that I look for in these waitbar entries is the ability to show the remaining time, like some of these. I have created my own waitbar as well to include the time remaining, and I remember thinking quite a bit about how I display the time. I can easily calculate the time using `tic` and `toc`. But what's the best way to display the seconds? It's probably better to say "3 hours 44 minutes 13 seconds remaining" than to say "13453 seconds remaining". So I had to do some manipulations to have an appropriate display, and many of the entries I highlighted above do that as well.

Rody's `seconds2human` does this nicely. You simply pass in the time in seconds, and it will convert it to something human understandable. There's an approximate display:

seconds2human(13453)

ans = About 3 hours and 44 minutes.

and an accurate display:

```
seconds2human(13453,'full')
```

ans = 3 hours, 44 minutes, 13 seconds.

Now, I can just make use of this and not have to worry about decomposing the seconds.

hWait = waitbar(0, 'Calculating...'); total = 1000; % Start timer tstart = tic; for iter = 1:total SomeComputation(iter); % Calculate remaining time remaining = toc(tstart)*(total-iter)/iter; % Update waitbar waitbar(iter/total,hWait, ... ['Time remaining: ',seconds2human(remaining)]) end delete(hWait);

**Comments**

I also want to point out that Rody's code is very well-written. It is well-documented, has error checking, and allows for a vectorized call, i.e. you can pass an array of numbers. Give this a try and let us know what you think here or leave a comment for Rody.

Get the MATLAB code

Published with MATLAB® R2013b

**Category:**- Picks

## Recent Comments