首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在bash脚本中转换日期/时间和生成偏移量

在bash脚本中转换日期/时间和生成偏移量
EN

Stack Overflow用户
提问于 2012-06-05 00:12:44
回答 1查看 655关注 0票数 0

我需要一个脚本来完成一些日期/时间转换。它应该以特定的时间作为输入。然后,它应该生成一系列偏移,以两个小时:分钟形式和毫秒数。

例如,在03:00,它应该返回04:02:07 (3727000 21*) 05:04:14 (7454000 21),06:06:21等等。

作为bash脚本,我该怎么做呢?理想情况下,它可以同时在Mac和Linux (Ubuntu或Debian)上工作。

  • (1小时*60分钟/小时*60秒*1000毫秒)+(2分钟*60秒/分钟*1000毫秒/秒)+(7秒*1000毫秒)= ( 60 *60*1000)+(2*60*1000)+(7*1000) = 3727000
EN

回答 1

Stack Overflow用户

发布于 2012-06-05 02:14:24

代码语言:javascript
复制
time2ms () {
    local time=$1 hour minute second
    hour=${time%%:*}
    minute=${time#$hour:}
    minute=${minute%:*}
    second=${time#$hour:$minute}
    second=${second/:}
    echo "$(( ( (10#${hour} * 60 * 60) + (10#${minute} * 60) + 10#${second} ) * 1000 ))"
}

ms2time () {
    local ms=$1 hour minute second
    ((second = ms / 1000 % 60))
    ((minute = ms / 1000 / 60 % 60))
    ((hour = ms / 1000 / 60 / 60))
    printf '%02d:%02d:%02d\n' "$hour" "${minute}" "${second}"
}

show_offsets () {
    local time=$1 interval=$2 time_ms interval_ms new_time
    time_ms=$(time2ms "$time")
    interval_ms=$(time2ms "$interval")
    new_time=$(ms2time $((time_ms + interval_ms)) )
    echo "$new_time (${interval_ms}ms)"
}

演示:

代码语言:javascript
复制
$ show_offsets 03:00 1:02:07
04:02:07 (3727000ms)
$ show_offsets 03:00 2:04:14
05:04:14 (7454000ms)
$ show_offsets 03:00 3:06:21
06:06:21 (11181000ms)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10890039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档