DEV Community

Bruce Axtens
Bruce Axtens

Posted on

2 1

toTimeString(), a JavaScript function to make sense of millisecond values

From time to time I'm subtracting two Date().valueOf()s and trying to make sense of the string of numbers left behind. So first, this is what the output looks like.

> toTimeString(1010)
1s 10ms
> toTimeString(10101)
10s 101ms
> toTimeString(101010)
1m 41s 10ms
> toTimeString(1010101)
16m 50s 101ms
> toTimeString(10101010)
2h 48m 21s 10ms
> toTimeString(101010101)
1d 4h 3m 30s 101ms
> toTimeString(1010101010)
11d 16h 35m 1s 10ms

> toTimeString(0)
instantaneous
Enter fullscreen mode Exit fullscreen mode

Looks like something you can use/adapt? Here's the code

const toTimeString = (ms) => {
        if (ms === 0) {
            return "instantaneous";
        }
        const mss = ms % 1000;
        ms = Math.floor(ms / 1000);
        const scs = ms % 60;
        ms = Math.floor(ms / 60);
        const mns = ms % 60;
        ms = Math.floor(ms / 60);
        const hrs = ms % 24;
        ms = Math.floor(ms / 24);
        const dys = ms;
        const lst = [
            dys > 0 ? dys + "d " : "",
            hrs > 0 ? hrs + "h " : "",
            mns > 0 ? mns + "m " : "",
            scs > 0 ? scs + "s " : "",
            mss > 0 ? mss + "ms " : "",
        ];
        return lst.join("").trim();
};
Enter fullscreen mode Exit fullscreen mode

First off, it checks for zero and if so returns "instantaneous". If not zero, then it uses division/remainder arithmetic to peel off the millisecond, second, minute, hour and day values. These are put into an array if they're greater than zero. If they're not, the slot gets filled with an empty string. Finally the array is joined with an empty string, trimmed and returned.

There may be a better way of doing this and if there is, please tell me!

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read full post →

Top comments (0)