#!/bin/bash

# 自定义颜色显示
c_br='\e[1;31m'     # bold red
c_bg='\e[1;32m'     # bold green
c_by='\e[1;33m'     # bold yellow
c_bb='\e[1;34m'     # bold blue
c_bp='\e[1;35m'     # bold purple
c_bc='\e[1;36m'     # bold cyan
c_bir='\e[1;3;31m'  # * bold italic red
c_big='\e[1;3;32m'  # bold italic cyan
c_bib='\e[1;3;34m'  # * bold italic cyan
c_bic='\e[1;3;36m'  # bold italic cyan
c_e='\e[0m'         # reset


number=$1

if [[ $number =~ ^[0-9]{1,11}$ ]]; then
    date -d@$number +'%Y-%m-%d %H:%M:%S'
elif [[ $number =~ ^0[x|X][0-9a-fA-F]{1,9}$ ]]; then
    hex=`printf "%d" $number`
    date -d@$hex +'%Y-%m-%d %H:%M:%S'
elif [[ $number =~ ^[0-9a-fA-F]{1,9}$ ]]; then
    hex=`printf "%d" '0x'$number`
    date -d@$hex +'%Y-%m-%d %H:%M:%S'
else
    echo -e "${c_bb}-j选项：将十进制或者十六进制数字作为入参，转换成标准时间格式，只接收第一个参数，其他参数将被丢弃，有歧义时，使用'0x'或者'0X'来区分十进制和十六进制，退出...${c_e}\n"
    echo -e "${c_br}请输入正确的十进制--11位以内，或者十六进制数字--9位以内：${c_e}"
    echo -e "  十进制的时间戳 - 1678523385"
    echo -e "  十六进制时间戳 - 0x640c3bf9/0X640C3BF9/0x640C3bf9/640c3bf9"
    echo -e "${c_bb}有歧义时，使用'0x'或者'0X'来区分十进制和十六进制${c_e}"
    exit 233
fi


