#!/usr/bin/env bash

now() {
    local dt=
    local fmt='+%F_%T_%N'
    if [ -z "$1" ]; then
        dt="$(date -u "$fmt")"
    elif [ -e "$1" ]; then
        dt="$(date -u -r "$1" "$fmt")"
    else
        dt="$(date -u -d "$1" "$fmt")"
    fi

    local F= T= N=
    F=${dt%%_*}
    T=${dt#*_}
    T=${T%_*}
    N=${dt##*_}
    local H= M= S=
    H=${T%%:*}
    M=${T#*:}
    M=${M%:*}
    S=${T##*:}

    # don't interpret numbers as octal
    F=${F#0*}
    T=${T#0*}
    N=${N#0*}
    H=${H#0*}
    M=${M#0*}
    S=${S#0*}

    local ms=
    let 'ms=(H*60*60+M*60+S)*1000+N/1000000'
    ms=$(printf '%08i' $ms)
    echo "${F}_${ms}"
}

now "$@"