Home > Software engineering >  Get seconds from time without semicolons HHMMSS in bash
Get seconds from time without semicolons HHMMSS in bash

Time:10-08

I am currently typing in time to be converted into seconds as HH:MM:SS with this:

 $(date -d "1970-01-01 $element Z"  %s)

I would like to be able to supply the time as HHMMSS without the : semicolons. But have the same outcome. Converted into seconds.

Input:

010000 = 60*60*1 = 3600s
004032 = 60*40 32 = 2432s

CodePudding user response:

If you have $element containing a six-digit string representing a time HHMMSS, you can convert it directly:

(( s = 10#${element:0:2}*3600   10#${element:2:2}*60   10#${element:4} ))

This uses parameter expansion to extract the substrings.

You need to prefix them with 10# so bash doesn't treat them as octal if they begin with zero.

CodePudding user response:

Use parameter expansion to extract the substrings:

seconds=$(date -d "1970-01-01 ${element:0:2}:${element:2:2}:${element:4} Z"  %s)
        #                     2 chars from    2 chars from   rest of the
        #                     position 0      position 2     string from 
        #                                                    position 4
  • Related