
___x_cmd_humantime_tosec_(){
    local decimal_flag=""
    while [ $# -gt 0 ]; do
        case "$1" in
            --decimal)    decimal_flag=1; shift ;;
            *)            break ;;
        esac
    done

    local human="${1}"

    local day=0
    local hour=0
    local minute=0
    local second=0

    local num
    for num in ${=${human//[dhms]/ }}; do
        human="${human#"$num"}"
        case "$human" in
            d*)     day=$((     day      + num ))   ;;
            h*)     hour=$((    hour     + num ))   ;;
            m*)     minute=$((  minute   + num ))   ;;
            s*)     second=$((  second   + num ))   ;;
            *)      second=$((  second   + num ))   ;;
        esac
        human="${human#?}"
    done

    x_=$(( ( ( day * 24 + hour ) * 60 + minute ) * 60 + second ))

    if [ "$___X_CMD_HUMANTIME_UNIT" = ms ]; then
        printf -v x_ "%d" "$(( x_ * 1000 ))"
    elif [ -n "$decimal_flag" ]; then
        printf -v x_ "%.3f" "$x_"
    else
        printf -v x_ "%d"   "$x_"
    fi
}


