当我们需要将时间戳转换为特定格式的日期时间字符串时,我们可以使用 JavaScript 中内置的 Date 对象来进行处理,然后使用字符串模板 (template string)即可实现。以下是将时间戳转换为 yyyy-MM-dd hh:mm 格式的完整攻略。
1. 创建 Date 实例
首先,我们需要通过 Date() 构造函数创建一个 Date 实例,构造函数可以接收代表日期时间的参数,其中最基本的就是时间戳。时间戳是 UNIX 时间,是自 1970 年 1 月 1 日 00:00:00 UTC(协调世界时)以来所经过的秒数。
const timestamp = 1609459200; // 2021 年 1 月 1 日 00:00:00 的时间戳
const date = new Date(timestamp * 1000);
需要注意的是,我们需要将从服务器端获取的时间戳 timestamp
转换成以毫秒为单位的时间戳,这是因为 JavaScript 中的时间戳是以毫秒为单位的。
2. 处理时间格式
接下来,我们需要将时间戳转换为指定格式的日期时间字符串。ES6 中提供了 Template String(模板字符串)的语法,可以将变量插入到字符串中。由于不同的时间单位(年、月、日、时、分、秒)可能需要不同的处理,因此我们需要分别处理。
const year = date.getFullYear();
const month = date.getMonth() + 1;
const day = date.getDate();
const hours = date.getHours();
const minutes = date.getMinutes();
const formattedDatetime = `${year}-${month}-${day} ${hours}:${minutes}`;
上述代码中,我们首先使用了 getFullYear()
方法来获取年份,然后使用了 getMonth()
方法来获取月份,需要注意的是,getMonth()
返回的下标从 0 开始,因此我们需要加上 1。同理,获取日期使用了 getDate()
方法,获取小时使用了 getHours()
方法,获取分钟使用了 getMinutes()
方法。
最后,我们使用字符串模板 (template string) 将所有的变量插入到字符串中,从而得到最终的日期时间字符串。
示例说明
示例一
以下是一个示例,将时间戳 1609459200 转换为 "2021-01-01 00:00" 的格式:
const timestamp = 1609459200;
const date = new Date(timestamp * 1000);
const year = date.getFullYear();
const month = date.getMonth() + 1;
const day = date.getDate();
const hours = date.getHours();
const minutes = date.getMinutes();
const formattedDatetime = `${year}-${month}-${day} ${hours}:${minutes}`;
console.log(formattedDatetime);
// 输出结果为:2021-1-1 0:0
我们可以发现,由于月和日的数值是单个数字,会导致输出结果不符合我们的预期,因此我们需要在处理月和日时,判断是否为一位数,如果是则需要在数字前添加一个 "0"。
示例二
以下是一个将时间转换为 UTC 时间,再将其格式化的示例:
const timestamp = Date.parse("2022-01-01T00:00:00Z");
const date = new Date(timestamp);
const year = date.getUTCFullYear();
const month = (date.getUTCMonth() + 1).toString().padStart(2, "0");
const day = date.getUTCDate().toString().padStart(2, "0");
const hours = date.getUTCHours().toString().padStart(2, "0");
const minutes = date.getUTCMinutes().toString().padStart(2, "0");
const formattedDatetime = `${year}-${month}-${day} ${hours}:${minutes}`;
console.log(formattedDatetime);
// 输出结果为:2022-01-01 00:00
由于时间是 UTC 时间,因此我们需要使用 getUTCFullYear()
、getUTCMonth()
和 getUTCDate()
方法来获取时间的年、月、日部分。同时,我们使用 padStart()
方法来检查月、日、小时和分钟是否是一位数,并在前面加上 "0",以满足输出格式的要求。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js实现把时间戳转换为yyyy-MM-dd hh:mm 格式(es6语法) - Python技术站