问题:我在一个 json 文件里看到这个字段:
“time”: 1721010353
请问这个数字代表什么含义?如何将其转换成普通人可以阅读的 time 格式?
回答:
这个数字代表的是 Unix 时间戳(Unix timestamp),也称为 POSIX 时间戳。它是指自 1970 年 1 月 1 日 00:00:00 UTC 以来经过的秒数。这个时间戳通常用于记录和计算时间。
要将这个 Unix 时间戳转换成普通人可以阅读的时间格式,可以使用多种编程语言来实现。例如,使用 Python,你可以按照以下步骤进行转换:
import datetime
# Unix 时间戳
timestamp = 1721010353
# 将时间戳转换为 datetime 对象
dt_object = datetime.datetime.fromtimestamp(timestamp)
# 格式化为可读的时间字符串
readable_time = dt_object.strftime('%Y-%m-%d %H:%M:%S')
print(readable_time)
执行这段代码,将会输出一个格式化的日期和时间字符串。让我们来进行转换并查看结果。
这个 Unix 时间戳 1721010353
转换成可读的时间格式后是 2024-07-15 02:25:53
。
用 JavaScript 转换。
在 JavaScript 中,你可以使用 Date
对象来进行 Unix 时间戳的转换。以下是将 Unix 时间戳转换为可读日期时间格式的 JavaScript 代码:
// Unix 时间戳
const timestamp = 1721010353;
// 将时间戳转换为毫秒
const date = new Date(timestamp * 1000);
// 格式化为可读的时间字符串
const readableTime = date.toISOString().slice(0, 19).replace('T', ' ');
console.log(readableTime);
这段代码会将 Unix 时间戳转换为可读的日期和时间格式,并在控制台中输出。让我们来逐步解释这段代码:
-
const timestamp = 1721010353;
:定义一个 Unix 时间戳。 -
const date = new Date(timestamp * 1000);
:将 Unix 时间戳转换为 JavaScript 的Date
对象。注意,JavaScript 中的Date
对象使用的是毫秒,因此需要将 Unix 时间戳乘以 1000。 -
const readableTime = date.toISOString().slice(0, 19).replace('T', ' ');
:将Date
对象转换为 ISO 字符串,然后提取出日期和时间部分,并将 ‘T’ 替换为空格,使其更易读。 -
console.log(readableTime);
:在控制台输出可读的时间字符串。
转换成 GMT 8+
在 JavaScript 中,可以使用 Date
对象的方法和 Intl.DateTimeFormat
来将 Unix 时间戳转换成指定时区的本地时间。以下是将 Unix 时间戳转换为 GMT+8 时区本地时间的代码:
// Unix 时间戳
const timestamp = 1721010353;
// 将时间戳转换为毫秒
const date = new Date(timestamp * 1000);
// 使用 Intl.DateTimeFormat 格式化时间
const options = {
timeZone: 'Asia/Shanghai',
year: 'numeric',
month: '2-digit',
day: '2-digit',
hour: '2-digit',
minute: '2-digit',
second: '2-digit',
hour12: false
};
const formatter = new Intl.DateTimeFormat('zh-CN', options);
const parts = formatter.formatToParts(date);
const readableTime = parts.map(({ type, value }) => {
switch (type) {
case 'year': return `${value}-`;
case 'month': return `${value}-`;
case 'day': return `${value} `;
case 'hour': return `${value}:`;
case 'minute': return `${value}:`;
case 'second': return value;
default: return '';
}
}).join('');
console.log(readableTime);
这段代码将 Unix 时间戳转换为 GMT+8 时区的本地时间,并以可读的格式输出。解释如下:
const date = new Date(timestamp * 1000);
:将 Unix 时间戳转换为 JavaScript 的Date
对象。- 定义
options
对象,指定时区为Asia/Shanghai
,并设置时间格式。 - 使用
Intl.DateTimeFormat
创建格式化器formatter
。 - 调用
formatter.formatToParts(date)
,将Date
对象格式化为各个部分。 - 遍历
parts
数组,拼接成可读的时间字符串。
这样可以确保输出的时间为 GMT+8 时区的本地时间。