Unix 时间戳转换器

Epoch 时间转换器,用于方便的时间戳至今和时间转换. 将日期和时间转换为Unix时间戳(a.k.a. Unix 时间, Epoch 时间) 或执行相向的时代到日期和时间转换.

转换器

转换 Unix 时间戳

时间戳到日期和时间

日期和时间到时间戳

指南

关于 Unix 时间戳

一个Unix时间戳(Unix timettamp)是一种从协调世界时1970年1月1日Unix Epoch起以跑总秒来追踪时间的方法. 此数秒是代表特定时间点的单数.

Unix 时间戳的要点:

  • 它们总是在协调世界时
  • 它们作为单一编号(自时代以来秒)
  • 它们被广泛用于编程和计算机系统
  • 它们为不同系统代表时间提供了标准化方法。
指南

理解 Unix 时间戳

Unix timetamps,又称"Epoch时间"或"POSIX时间",是计算中的一个基本概念,能够在不同系统和应用程序之间实现一致的时间代表. 在其核心中,一个Unix时间戳(Unix timettamp)仅仅是一个整数,它计算自Unix Epoch - 1970年1月1日 UTC凌晨0:00分起所经过的秒数.

历史背景

Unix时间戳系统是在Unix操作系统早期开发的. 最早的Unix时间版本在60 Hz时有32位整数递增,时间段被计为不随时间变化来防止溢出. 目前的时代(1970年1月1日)被Unix工程师选中,因为它被认为是一个方便的日期,而精度后来被改为数秒来避免短期外溢.

技术定义

从技术上讲,Unix时间的定义是自Unix Epoch起所经过的秒数,减跳秒. 这意味着Unix时间中的每一天完全由86,400秒组成,而跳跃秒则以特定的方式得到处理来保持这种一致性.

Unix 时间戳的优点

Unix timettamp为计算机系统提供了若干优点:

  • 简单化:单个整数值代表特定时间点
  • 效率:时间戳很紧凑,容易储存
  • 计算:时间差异很容易通过简单减法计算
  • 通用:独立于当地时区和日历
  • 可排序性:时间戳很容易按时间顺序排序
  • 互通性:跨越不同编程语言和系统的工作

代表格式

Unix 时间戳可以根据上下文以不同格式表示:

  • 秒数:经典十进制格式( 如 1623074400)
  • 毫秒数:JavaScript中常用的13位格式(例如1623074400000)
  • 微秒:一些高精度系统使用的16位格式
  • 纳米秒:更精确的19位格式

2038年的问题

A significant limitation of Unix timestamps when stored as 32-bit signed integers is the "Year 2038 Problem." On January 19, 2038, at 03:14:07 UTC, 32-bit systems will reach their maximum representable time (2,147,483,647 seconds since the epoch). After this point, the timestamp will overflow and wrap around to negative numbers, representing dates back in 1901 instead of moving forward.

为了解决这个问题,许多现代系统已经过渡到使用64位整数来表示Unix时间戳,将可代表的时间范围扩大到两个方向的大约2,220亿年,从而有效地解决问题.

全球使用

unix timetamp现在被使用到远远超出仅仅Unix类操作系统. 发现于:

  • 网络应用程序和API
  • 数据库系统
  • 文件系统和文件格式
  • 日志文件和审计线索
  • 语言编程标准库
  • 网络协议
  • 移动应用程序

了解Unix时间戳对于开发者,系统管理员,以及任何在计算系统中使用基于时间的数据的人来说都是必不可少的. 在继续通过本指南时,您将更多地了解与Unix时间戳有效工作的具体应用和转换技术.

指南

什么是Unix时间戳?

一个Unix时间戳(也叫POSIX时间或Epoch时间)是一个描述时间点的系统. 这是Unix Epoch之后的秒数,减跳秒.

主要特征:

  • 1970年1月1日开始, UTC凌晨00:00
  • 数秒( 不为毫秒或微秒)
  • 不计算跳跃秒数
  • 总是在 UTC 时区
  • Unix 类似操作系统常用
指南

如何转换 Unix 时间戳

在Unix时间戳和人可读日期之间转换:

  1. 1
    时间戳至今: 输入 Unix 时间戳( 自 epoch 起秒)
  2. 2
    时间戳: 以 YYY- MM- DD HH: MM:SS 格式输入日期和时间
  3. 3
    Click "Convert" to see the result

示例:1677649200=2023-03-01 UTC中午12:00

指南

Unix 时间戳的共同用途

Unix时间戳被广泛用于各种应用:

  • 数据库时间戳和记录创建日期
  • 文件系统时间戳(创建、修改、访问时间)
  • 日志文件和系统事件
  • API 回复和数据交换
  • 版本控制系统
  • 缓存过期时间
  • 会话管理和认证
指南

方案拟订实例

以下是使用Unix时间戳工作的一些常见编程实例:

Py

import time
import datetime

# Current timestamp
current_timestamp = int(time.time())

# Convert timestamp to datetime
dt = datetime.datetime.fromtimestamp(current_timestamp)

# Convert datetime to timestamp
timestamp = int(dt.timestamp())

JavaScript

// Current timestamp
const currentTimestamp = Math.floor(Date.now() / 1000);

// Convert timestamp to Date
const date = new Date(currentTimestamp * 1000);

// Convert Date to timestamp
const timestamp = Math.floor(date.getTime() / 1000);
指南

时区考虑因素

关于时区和Unix时间戳的重要点:

  • Unix 时间戳总是在协调世界时
  • 转换为本地时间时, 考虑时区偏移
  • 日光保存时间( DST) 可能影响本地时间转换
  • 总是在协调世界时数据库中存储时间戳
  • 仅为显示目的转换为本地时间

最佳做法:

  • 在协调世界时存储所有时间戳
  • 可能时使用时区认识日期对象
  • 考虑对日期字符串使用 ISO 8601 格式
  • 仔细处理 DST 转换