JavaScript 和 Python 里的日期转换例子

问题:我在一个 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 时间戳转换为可读的日期和时间格式,并在控制台中输出。让我们来逐步解释这段代码:

  1. const timestamp = 1721010353;:定义一个 Unix 时间戳。

  2. const date = new Date(timestamp * 1000);:将 Unix 时间戳转换为 JavaScript 的 Date 对象。注意,JavaScript 中的 Date 对象使用的是毫秒,因此需要将 Unix 时间戳乘以 1000。

  3. const readableTime = date.toISOString().slice(0, 19).replace('T', ' ');:将 Date 对象转换为 ISO 字符串,然后提取出日期和时间部分,并将 ‘T’ 替换为空格,使其更易读。

  4. 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 时区的本地时间,并以可读的格式输出。解释如下:

  1. const date = new Date(timestamp * 1000);:将 Unix 时间戳转换为 JavaScript 的 Date 对象。
  2. 定义 options 对象,指定时区为 Asia/Shanghai,并设置时间格式。
  3. 使用 Intl.DateTimeFormat 创建格式化器 formatter
  4. 调用 formatter.formatToParts(date),将 Date 对象格式化为各个部分。
  5. 遍历 parts 数组,拼接成可读的时间字符串。

这样可以确保输出的时间为 GMT+8 时区的本地时间。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值