一、時間戳轉時間 timestamp2date.sh
1 #!/bin/sh
2
3 function usage(){ 4 echo "-h --help \n" \ 5 " 將10/13位時間戳轉換為本地時間 \n"\ 6 " 參數:時間戳,支持10/13位兩種 \n"\ 7 " 默認值:當前時間向后5min \n"\ 8 " e.g. 1483430400(10位秒時間戳),1483430400000(13位毫秒時間戳) \n"
9 exit 1
10 } 11
12 ### 13 os_platform=`uname -s` 14 if [[ $# -le 0 ]]; then
15 echo "默認按照當前時間向后5min取值"
16 if [[ "${os_platform}" = "Darwin" ]];then
17 echo `date -v+5M +"%Y-%m-%d %H:%M:%S"` 18 elif [[ "${os_platform}" = "Linux" ]];then
19 echo `date -d +5min +"%Y-%m-%d %H:%M:%S"` 20 fi
21 else
22 case $1 in
23 -h|--help) 24 usage 25 ;; 26 *) 27 timestampStr=${1} 28 length=`echo ${#timestampStr}` 29 if [[ ${length} -ne 10 ]] && [[ ${length} -ne 13 ]];then
30 echo "請輸入10/13位數字時間戳"
31 exit 1
32 elif [[ ${length} -eq 13 ]];then
33 timestampStr=${timestampStr:0:10} 34 fi
35 echo "時間戳位:${timestampStr}"
36 if [[ "${os_platform}" = "Darwin" ]];then
37 dateStr=`date -r${timestampStr} +"%Y-%m-%d %H:%M:%S"` 38 elif [[ "${os_platform}" = "Linux" ]];then
39 dateStr=`date -d @${timestampStr} +"%Y-%m-%d %H:%M:%S"` 40 fi
41 echo "${1}對應的本地時間為${dateStr}"
42 ;; 43 esac
44 fi
命令行執行
1 sh timestamp2date.sh 1507704300000
2 時間戳位:1507704300
3 1507704300000對應的本地時間為2017-10-11 14:45:00
二、時間轉時間戳 date2timestamp.sh
1 #!/bin/sh
2
3 function usage(){ 4 echo "-h --help \n" \ 5 " 將本地時間轉換為13位時間戳(毫秒時間戳) \n"\ 6 " 只有1個參數:本地時間,參數格式:'%Y-%m-%d %H:%M:%S' \n"\ 7 " 默認值:當前時間向后5min \n"\ 8 " e.g. 2017-01-01 16:00:00 \n"
9 exit 1
10 } 11
12
13 ##時間采用正則匹配 14 time_pattern="^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2} [0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}"
15 os_platform=`uname -s` 16
17 if [[ $# -le 0 ]]; then
18 echo "默認按照當前時間向后5min取值"
19 if [[ "${os_platform}" = "Darwin" ]];then
20 echo `date -v+5M +%s`000
21 elif [[ "${os_platform}" = "Linux" ]];then
22 echo `date -d +5min +%s`000
23 fi
24 else
25 case $1 in
26 -h|--help) 27 usage 28 ;; 29 *) 30 dateStr=${1} 31 echo ${dateStr} 32 if [[ "${dateStr}" =~ ${time_pattern} ]];then
33 if [[ "${os_platform}" = "Darwin" ]];then
34 echo `date -j -f "%Y-%m-%d %H:%M:%S" "${dateStr}" +%s`000
35 elif [[ "${os_platform}" = "Linux" ]];then
36 echo `date -d "${dateStr}" +%s`000
37 fi
38 else
39 echo "時間格式不正確,請按照'%Y-%m-%d %H:%M:%S'格式輸入,如'2017-01-01 16:00:00' "
40 fi
41 ;; 42 esac
43 fi
命令行執行
1 sh date2timestamp.sh '2017-10-13 14:38:30'
2 2017-10-13 14:38:30
3 1507876710000
作者:BestFei
鏈接:https://www.jianshu.com/p/063e81713de3
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。