要计算以下格式YYYYMMDDHHMMSSXXX的时间差(以毫秒为单位). Xxx表示毫秒.

20230101232324548-20230101232324500=48

我正在try 在Linux中使用expr a-b,但它不能为少数记录提供正确的结果. 无论是在Linux中还是在EXCEL中,我们都可以计算差额.任何可能的方法都会有帮助.

推荐答案

很抱歉之前的回答很糟糕.

Bash脚本:diffdate.sh

#! /usr/bin/env bash

D1="$1"
D2="$2"

# Date conversion from "YYYYMMDDHHMMSSNNN" to "YYYY-MM-DDTHH:MM:SS" (ISO8601)
D1D="${D1:0:4}-${D1:4:2}-${D1:6:2}T${D1:8:2}:${D1:10:2}:${D1:12:2}"
# Date conversion from "YYYYMMDDHHMMSSNNN" to "NNN"
D1N="${D1:14:3}"
# ISO date conversion to milliseconds from 1970-01-01 + "NNN"
D1S=$(date -d "${D1D}" +"%s")${D1N}

# Date conversion from "YYYYMMDDHHMMSSNNN" to "YYYY-MM-DDTHH:MM:SS" (ISO8601)
D2D="${D2:0:4}-${D2:4:2}-${D2:6:2}T${D2:8:2}:${D2:10:2}:${D2:12:2}"
# Date conversion from "YYYYMMDDHHMMSSNNN" to "NNN"
D2N="${D2:14:3}"
# ISO date conversion to milliseconds from 1970-01-01 + "NNN"
D2S=$(date -d "${D2D}" +"%s")${D2N}

# Diff
DIFFS=$(( D1S - D2S ))
echo "${DIFFS}"

可使用以下命令执行:

> chmod +x diffdate.sh

按如下方式执行:

> ./diffdate.sh 20230101232324548 20230101232324500
48
> ./diffdate.sh 20230101232324648 20230101232324500
148
> ./diffdate.sh 20230101232324548 20230101232324600
-52

结果以毫秒为单位. 您想要几分钟、几小时、几天的结果吗?

Linux相关问答推荐

git别名函数可以用单引号写吗?

cu可以从串口读取,但我自己的C程序不能

在 Linux 中屏蔽文件中的位 - 按位运算

如何摆脱管道分隔字段中不需要的管道符号 - Linux

什么命令用于在linux中创建或修改具有指定文件大小的多个文件

Linux合并文件

普通用户 chown(仅更改组)

仅显示 tcsh 或 bash 中作为符号链接的文件和文件夹

DMA 和内存映射 IO 有什么区别?

如何排除 tar 的绝对路径?

让 Tk 看起来像一个原生 Linux 应用程序

如何在没有 IDE 的情况下构建和部署三星 SmartTV 应用程序(例如:在 Linux 上)

一个进程如何拦截Linux上另一个进程的stdout和stderr?

Linux 中的直接内存访问

如何在shell的递归目录中列出特定类型的文件?

当父进程被杀死时,使用 fork() 创建的子进程是否会自动被杀死?

Linux SCHED_OTHER、SCHED_FIFO 和 SCHED_RR - 区别

Vim 增量搜索

Linux如何确定下一个PID?

从文件中随机 Select 行而不用 Unix 啜饮它