How do I convert dmesg timestamp to custom date format?

dmesg, kernel, logging, timestamp

Solution

Understanding `dmesg` timestamps is pretty simple: It is the time in seconds since the kernel started. So, having the time of startup (`uptime`), you can add up the seconds and show them in whatever format you like.

Or better, you could use the `-T` command line option of `dmesg` and parse the human-readable format.

From the man page:

-T, --ctime
    Print human readable timestamps. The timestamp could be inaccurate!

    The time source used for the logs is not updated after system SUSPEND/RESUME.

Problem

I am trying to understand the `dmesg` timestamp and find it hard to convert that to change it to a Java date or custom date format. Sample dmesg log entry: ``` [14614.647880] airo(eth1): link lost (missed beacons) ``` How do I convert `14614.647880` to a standard date?

Original source