温馨提示×

ubuntu时间戳怎样存储

小樊
37
2026-10-04 05:54:19
栏目: 云计算

在 Ubuntu(Linux)系统中,时间戳(Timestamp)本质上就是一个整数或浮点数,用于表示“从 1970-01-01 00:00:00 UTC 到现在的秒数或纳秒数”。
具体“怎样存储”取决于你指的是 系统层面 还是 应用/数据库层面。


一、Ubuntu 系统层面的时间戳

1. 系统内部存储方式

  • Linux 内核使用:
    • 秒级时间戳:time_t(通常是 64 位整数)
    • 纳秒精度:struct timespec
      struct timespec {
          time_t tv_sec;   // 秒
          long   tv_nsec;  // 纳秒
      };
      
  • 文件系统(ext4、xfs 等)中:
    • 文件时间戳(mtime/ctime/atime)以 秒 + 纳秒 存储

2. 查看系统时间戳

date +%s          # 当前时间戳(秒)
date +%s.%N       # 秒.纳秒

二、Shell / 脚本中的存储

1. 变量存储(整数)

ts=$(date +%s)
echo $ts

2. 日志或文件中

echo $(date +%s) >> log.txt

三、数据库中的时间戳存储(常见方式)

✅ 推荐方式

1. 存 Unix 时间戳(INT / BIGINT)

CREATE TABLE log (
    id INT,
    create_time BIGINT  -- 存 1700000000
);

2. 存 UTC 时间(DATETIME / TIMESTAMP)

CREATE TABLE log (
    create_time TIMESTAMP
);
  • MySQL TIMESTAMP 内部也是存 UTC 时间戳
  • 显示时按时区转换

四、编程语言中的存储示例

Python

import time
ts = int(time.time())  # 秒

C

#include <time.h>
time_t t = time(NULL);

Java

long ts = System.currentTimeMillis() / 1000;

五、常见建议(很重要)

✅ 存储时用 UTC 时间戳
✅ 展示时再转本地时区
❌ 不要存“字符串时间”做计算
❌ 不要混用时区


如果你指的是:

  • 文件系统时间戳
  • 数据库设计
  • 某个具体语言
  • 日志系统

可以告诉我,我可以给你更具体的方案。

0 踩