Shell 時間與時間戳相換(Mac)


一、時間戳轉時間 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
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM