Ubuntu 时间戳的计算原理与使用方法
一、核心定义与计算口径
二、在 Ubuntu 中的获取与转换
date +%sdate +%s%3Ndate -d @<timestamp>date -d @<timestamp> "+%Y-%m-%d %H:%M:%S"date -d "2025-11-30 12:34:56" +%sdate -u -d "2025-11-30 12:34:56" +%sstart=$(date +%s); ...; end=$(date +%s); echo $((end - start))file_mtime=$(stat -c %Y /path); now=$(date +%s); if (( now - file_mtime < 86400 )); then ...; fipython3 -c 'import time; print(int(time.time()))'(秒级)、python3 -c 'import time; print(int(time.time()*1000))'(毫秒级)perl -MTime::HiRes -e 'printf "%.0f\n", Time::HiRes::time()*1000'(毫秒级)三、精度与系统调用
date +%s 或 C 的 time()date +%s%3N(取纳秒的前 3 位)date +%s%6N 可输出微秒;编程可用 gettimeofday()(微秒)或 clock_gettime(CLOCK_REALTIME, ...)(纳秒)clock_gettime:
struct timespec ts; clock_gettime(CLOCK_REALTIME, &ts); long long ms = (long long)ts.tv_sec * 1000 + ts.tv_nsec / 1000000;gettimeofday:
struct timeval tv; gettimeofday(&tv, NULL); long long ms = (long long)tv.tv_sec * 1000 + tv.tv_usec / 1000;date +%N 的纳秒精度取决于系统时钟与内核支持,某些环境下可能不提供纳秒级精度;跨平台或严格计时建议用 clock_gettime。四、常见注意事项
date -d @<ts> 默认按本地时区显示,加 -u 按UTC显示。time_t 将在2038-01-19 03:14:08(UTC)溢出;现代 Ubuntu 通常使用64 位时间类型,规避该问题。%N 的可用精度与系统有关;日志或严格计时建议使用毫秒级或微秒级的专用接口(如 clock_gettime)。