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
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

posted @ 2018-09-30 21:34  庚庚  阅读(2366)  评论(0)    收藏  举报