5 个版本

0.1.7 2020 年 4 月 28 日
0.1.6 2019 年 12 月 24 日
0.1.5 2019 年 7 月 6 日
0.1.4 2019 年 7 月 3 日
0.1.3 2019 年 6 月 26 日

命令行工具 中排名第 1730

MIT 许可证

86KB
2.5K SLoC

ut

ut 是一个处理 Unix 时间戳的命令行工具。

Latest Version ci Dependabot

动机

有很多次生成/解析 Unix 时间戳的机会。我认为 date 命令存在来处理这些情况。但还有一些小问题,对我很重要。

  • 在 macOS 和 Linux 之间无法使用相同的选项。
  • 难以记住用法。(这可能是由于上述问题引起的。)

这就是为什么我制作了一个新的命令行工具 ut-cli

我希望当开发者需要使用需要时间戳的命令(如 aws-cli)时,ut-cli 能正常工作。

示例用法

搜索特定时间段内的日志。

# from yesterday to today
$ aws logs filter-log-events \
    --log-group-name <LOG_GROUP_NAME> \
    --log-stream-names <LOG_STREAM_NAMES> \
    --query <QUERY> \
    --start-time $(ut -p ms g -b yesterday) \
    --end-time $(ut -p ms g -b today)

安装

如果您有 Rust 工具链,可以使用 cargo 安装 ut-cli。

$ cargo install ut-cli

或者克隆仓库并构建。

$ git clone https://github.com/yoshihitoh/ut-cli
$ cd ut-cli
$ cargo build --release
$ ./target/release/ut --version
ut 0.1.7

还有适用于 Linux、macOS 和 Windows 的预构建二进制文件。请参阅 发布

用法

ut-cli 0.1.7
yoshihitoh <[email protected]>
A command line tool to handle unix timestamp.

USAGE:
    ut [FLAGS] [OPTIONS] <SUBCOMMAND>

FLAGS:
    -u, --utc        Use utc timezone.
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -o, --offset <OFFSET>          Use given value as timezone offset.
    -p, --precision <PRECISION>
            Set the precision of output timestamp.


SUBCOMMANDS:
    generate    Generate unix timestamp with given options.
    help        Prints this message or the help of the given subcommand(s)
    parse       Parse a unix timestamp and print it in human readable format.

您可以通过环境变量设置选项。

| 名称 | 等价选项 | 示例 |:------------ :|:--------------:|:----------- | UT_OFFSET | -o/--offset | 09:00 | UT_PRECISION | -p/--precision | 毫秒 | UT_DATETIME_FORMAT | - | %Y-%m-%d %H:%M

UT_DATETIME_FORMAT 遵循 chrono 的日期时间规范。请参阅 文档 以获取详细信息。

# Set variables.
$ export UT_OFFSET='09:00'  # Use JST(+9).
$ export UT_PRECISION=millisecond  # Use timestamps in milliseconds.

# Generate a timestamp.
$ ut g
1588059756238

# Parse a timestamp.
$ echo 1588059756238 | ut p
2020-04-28 16:42:36.238 (+09:00)

# Change custom format and timezone.
$ export UT_DATETIME_FORMAT="%m/%d/%Y"
$ echo 1588059756238 | ut --offset=-7 p
04/28/2020

相当于

$ ut -o '09:00' -p millisecond p $(ut -o '09:00' -p millisecond g)

目前有两个子命令可用。

生成 Unix 时间戳

生成今天的午夜 Unix 时间戳。

$ ut generate -b today
1560870000

# You can use `-p` option to show it in millisecond.
$ ut -p ms generate -b today
1560870000000

您可以使用 -d 选项指定时间差。

# 3days, 12hours, 30minutes later from the midnight of today.
$ ut g -b today -d 3day -d 12hour -d 30minute
1561174200

# You can use short name on time unit.
$ ut g -b today -d 3d -d 12h -d 30min
1561174200

# You can modify a timestamp with a timestamp argument.
$ ut g -d 1min 1561174200
1561174260    # 1min(=60second) difference.

解析 Unix 时间戳

解析 Unix 时间戳并以可读格式打印。

$ ut p $(ut g -b today)
2019-06-19 00:00:00 (+09:00)

# You can parse timestamp in milliseconds.
$ ut -p ms p $(ut -p ms g -b today -d 11h -d 22min -d 33s -d 444ms)
2019-06-19 11:22:33.444 (+09:00)

更改时区

本地时区

如果您没有设置时区选项,ut 命令将使用本地时区。

在日本(UTC+9)

$ ut g --ymd 2019-06-24
1561302000

$ ut p 1561302000
2019-06-24 00:00:00 (+09:00)

您可以使用 -u--utc 选项使用 UTC 时区。

$ ut --utc p 1561302000
2019-06-23 15:00:00 (UTC)

您可以在任何环境中使用固定偏移的时区。

# Generate PST timestamp
$ ut -o -8 g --ymd 2019-06-24
1561363200

# Parse as PST timestamp
$ ut -o -8 p 1561363200
2019-06-24 00:00:00 (-08:00)

# Parse as UTC timestamp
$ ut -o 0 p 1561363200
2019-06-24 08:00:00 (+00:00)

待办事项

  • 在 README 中添加更多信息

依赖项

~7MB
~121K SLoC