shell 输出Unix时间戳

该文章介绍了一个Unix时间戳的Shell脚本,可以显示当前时间的秒、毫秒、微秒和纳秒级别的时间戳。用户可以通过命令行选项选择不同精度的时间戳输出。脚本提供了帮助信息和错误处理,便于使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

秒级时间戳: 

$ echo $(date +%s)
1681983716

毫秒/微秒/纳秒 时间戳:

$ date +%s%3N
1681984600895
$ date +%s%6N
1681984779486536
$ date +%s%9N
1681984840382296459

可以把命令保存到一个shell脚本中方便后续使用

#!/usr/bin/env bash

show_help() {
  cat <<EOT
Usage:
 timestamp [options]

 Show current unix timestamp, the duration since 1970-01-01 00:00:00 UTC, default in seconds

 Options:
 -s             Timestamp in seconds
 -m, --ms       Timestamp in milliseconds
 -u, --us       Timestamp in microseconds
 -n, --ns       Timestamp in nanoseconds
EOT
}

if [ $# -lt 1 ]; then
 date +%s
 exit 0
fi

case $1 in
-s)
  date +%s
  ;;
-m|--ms)
  date +%s%3N
  ;;
-u|--us)
  date +%s%6N
  ;;
-n|--ns)
  date +%s%9N
  ;;
*)
  printf "invalid option: %s\n" "$1" >&2
  show_help
  exit 1
  ;;
esac

Example:

$ chmod +x timestamp.sh
$ ./timestamp.sh
1681988240
$ ./timestamp.sh -m
1681988247134
$ ./timestamp.sh --us
1681988251839104
$ ./timestamp.sh --ns
1681988254563233455

### 将特定时间转换为Unix时间戳的方法或工具 在Python中,可以使用`datetime`模块和`time`模块将特定时间转换为Unix时间戳。以下是实现方法的详细说明和代码示例: #### 方法1:使用Python 通过`datetime`模块生成一个指定日期时间的对象,然后调用`time.mktime()`函数将其转换为Unix时间戳。 ```python import datetime import time # 指定时间 s = datetime.datetime(2023, 10, 5, 8, 0, 0) # 年-月-日 时:分:秒 unix_timestamp = time.mktime(s.timetuple()) # 转换为Unix时间戳 print(unix_timestamp) ``` 上述代码中的`s`对象表示2023年10月5日上午8点整的时间[^1]。 #### 方法2:使用PHP 在PHP中,可以通过`mktime()`函数创建指定时间,并直接获取其Unix时间戳。 ```php <?php $year = 2023; $month = 10; $day = 5; $hour = 8; $minute = 0; $second = 0; // 创建指定时间并获取Unix时间戳 $timestamp = mktime($hour, $minute, $second, $month, $day, $year); echo $timestamp; ?> ``` 上述代码中的`mktime()`函数用于生成2023年10月5日上午8点整的Unix时间戳[^2]。 #### 方法3:使用Linux命令行工具 在Linux系统中,可以使用`date`命令将特定时间转换为Unix时间戳。 ```bash # 指定时间格式为 "YYYY-MM-DD HH:MM:SS" date -d "2023-10-05 08:00:00" +"%s" ``` 上述命令会输出2023年10月5日上午8点整的Unix时间戳[^3]。 #### 方法4:使用Shell脚本 如果需要在Shell脚本中实现时间转换,可以结合`awk`或其他工具完成。 ```bash #!/bin/bash # 定义时间 year=2023 month=10 day=5 hour=8 minute=0 second=0 # 使用mktime函数生成Unix时间戳 timestamp=$(awk -v y="$year" -v m="$month" -v d="$day" -v h="$hour" -v i="$minute" -v s="$second" 'BEGIN{print mktime(y" "m" "d" "h" "i" "s)}') echo $timestamp ``` 上述脚本通过`awk`中的`mktime()`函数生成指定时间Unix时间戳[^4]。 ### 注意事项 - Unix时间戳是从1970年1月1日00:00:00 UTC开始计算的秒数。 - 不同编程语言或工具可能对本地时区有不同处理,请确保明确指定时区以避免错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值