The GNU date command has most of what you seem to want. And you could define an alias to make the commands you want shorter.
For the examples below, I defined this alias for use in some of your examples:
alias timeconverter='date -u -d "1970-01-01 + '
So, using your original list, here are various possibilities (some also using units as suggested in the other answer)
$ timeconverter --format '%s' 1h
3600
$ date -u -d "1970-01-01 01:00" +%s
3600
$ date -u -d "1970-01-01 + 1 hour" +%s
3600
$ units -t "1 hour" seconds
3600
$ timeconverter 1 hour" +'%s'
3600
$ timeconverter --format '%h:%m:%s' 3665s
1:01:05
$ date -u -d "@3665" +'%-k:%M:%S'
1:01:05
$ units "3665 seconds" time
1 hr + 1 min + 5 sec
$ timeconverter 3665 seconds" +'%-k:%M:%S'
1:01:05
$ timeconverter --format '%H:%m:%s' 3665s
01:01:05
$ date -u -d "@3665" +'%H:%M:%S'
01:01:05
$ date -u -d "@3665" +'%T'
01:01:05
$ date -u -d "1970-01-01 + 3665 sec" +'%H:%M:%S'
01:01:05
$ date -u -d "1970-01-01 + 3665 seconds" +'%H:%M:%S'
01:01:05
$ timeconverter 3665 seconds" +'%H:%M:%S'
01:01:05
$ timeconverter --format '%Hh%Mm%Ss' 3966s
1h5m6s
$ date -u -d "@3966" +'%-kh%-Mm%-Ss'
1h6m6s
$ timeconverter --format '%m' 2d
2880
$ echo $(( $(date -u -d "1970-01-01 + 2 days" +'%s') / 60 ))
2880
$ timeconverter --format '%d' 1w
7
$ echo $(( $(date -u -d "1970-01-01 + 1 week" +'%s') / 60 / 60 / 24 ))
7
$ timeconverter --format '%y' 365d
1
$ echo $(( $(date -u -d "1970-01-01 + 365 days" +'%Y') - 1970 ))
1
$ timeconverter --format '%s' 1h10m
4200
$ date -u -d "1970-01-01 + 1 hour 10 min" +'%s'
4200