时间戳是指从1970年1月1日0时0分0秒(北京时间:1970年1月1日8时0分0秒)开始,到现在所经过的秒数。在开发中,我们经常需要将时间戳转换为时间或日期格式,本文将从多个方面详细阐述这个过程。
一、时间戳转换时间段
如何将时间戳转换为时间段呢?很简单,只需要使用时间戳除以对应的时间单位得到时间段即可。例如:
var timestamp = 1577836800; // 对应的时间戳为2020-01-01 00:00:00
var seconds = timestamp % 60; // 秒
var minutes = Math.floor(timestamp / 60) % 60; // 分钟
var hours = Math.floor(timestamp / (60 * 60)) % 24; // 小时
var days = Math.floor(timestamp / (60 * 60 * 24)); // 天数
console.log(days + "天" + hours + "小时" + minutes + "分钟" + seconds + "秒"); // 输出:0天0小时0分钟0秒
这里我们通过计算得到了时间戳所对应的天、小时、分钟和秒数,再将其拼接成时间段的格式。
二、时间戳转换为时间格式
将时间戳转换为时间格式最简单的方式是使用JavaScript的Date对象。只需要将时间戳当做参数传入Date,即可得到对应的时间对象。例如:
var timestamp = 1577836800; // 对应的时间戳为2020-01-01 00:00:00
var time = new Date(timestamp * 1000);
console.log(time.toLocaleString()); // 输出:"2020/1/1 上午12:00:00"
这里需要注意,JavaScript的Date对象接受的参数为毫秒数,因此需要将时间戳乘以1000。
三、时间戳转换时间日期格式
有时候我们需要将时间戳转换为指定的时间日期格式,可以使用JavaScript内置的toLocaleDateString()和toLocaleTimeString()方法。例如:
var timestamp = 1577836800; // 对应的时间戳为2020-01-01 00:00:00
var options = {
year: 'numeric',
month: '2-digit',
day: '2-digit',
hour: '2-digit',
minute: '2-digit',
second: '2-digit'
};
var date = new Date(timestamp * 1000);
var date_str = date.toLocaleDateString('zh-CN', options);
var time_str = date.toLocaleTimeString('zh-CN', options);
console.log(date_str + " " + time_str); // 输出:"2020/01/01 00:00:00"
这里我们指定了需要显示的时间日期格式,并使用toLocaleDateString()和toLocaleTimeString()方法将时间对象转换为字符串。需要注意的是,toLocaleDateString()和toLocaleTimeString()方法的第一个参数是区域设置的字符串,对应语言和地区。在这里我们指定了为中国地区。
四、时间戳转换时间的算法
时间戳转换为时间的算法很简单,只需要将时间戳除以对应的时间单位,再将余数进行下一次除法运算,即可得到时间戳所对应的年、月、日、时、分和秒数。以下是对应的示例代码:
// 时间戳转换为时间
function timestampToTime(timestamp) {
var date = new Date(timestamp * 1000);
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
var hour = date.getHours();
var minute = date.getMinutes();
var second = date.getSeconds();
return year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second;
}
console.log(timestampToTime(1577836800)); // 输出:"2020-1-1 0:0:0"
这里我们封装了一个函数,将时间戳转换为时间。在函数内部,我们使用了Date对象获取对应的日期和时间,再将其拼接成字符串格式。需要注意的是,月份从0开始,因此需要将其加一。
五、时间戳转换时间函数
既然已经有了时间戳转换为时间的算法,我们可以很容易地将其封装成一个函数。以下是对应的代码:
// 时间戳转换为时间
function timestampToTime(timestamp) {
var date = new Date(timestamp * 1000);
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
var hour = date.getHours();
var minute = date.getMinutes();
var second = date.getSeconds();
return year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second;
}
console.log(timestampToTime(1577836800)); // 输出:"2020-1-1 0:0:0"
这里的函数和前面提到的算法一致,只是将其封装成了一个可复用的函数。在实际开发中,经常会用到这样的函数。
六、时间戳转换时间公式
除了使用算法和函数,我们还可以使用公式进行时间戳转换。设时间戳为timestamp,时间戳所对应的时间为time,时间戳所对应的时区为timezone,则时间与时间戳的关系如下:
time = timestamp + 3600 * timezone;
其中3600为一小时所对应的秒数,timezone为时区。例如,北京时间的时区为8,因此对应的timezone为8。
七、时间戳转换时间js
对于时间戳转换为时间的需求,JavaScript提供了多种方式实现。其中一种最简单的方式是使用Date对象。以下是对应的示例代码:
var timestamp = 1577836800; // 对应的时间戳为2020-01-01 00:00:00
var time = new Date(timestamp * 1000);
console.log(time.toLocaleString()); // 输出:"2020/1/1 上午12:00:00"
这里我们将时间戳传入Date对象,再使用toLocaleString()方法将其转换为字符串格式。需要注意的是,JavaScript的Date对象对时间的处理和标准时间有些差别,因此在使用时需要根据情况进行转换。
八、时间戳转换时间格式
有时候我们需要将时间戳转换为指定的时间格式,例如:YYYY-MM-DD HH:mm:ss,这时候可以使用moment.js库。以下是对应的示例代码:
var timestamp = 1577836800; // 对应的时间戳为2020-01-01 00:00:00
var time = moment.unix(timestamp).format("YYYY-MM-DD HH:mm:ss");
console.log(time); // 输出:"2020-01-01 00:00:00"
这里我们使用了moment.js库,首先将时间戳转换为时间对象,再使用format()方法将其转换为指定的时间格式。
九、时间戳转换选取
时间戳转换为时间的需求在开发中非常常见,因此我们需要根据实际情况选择最合适的方式进行处理。一般来说,使用JavaScript的Date对象和moment.js库都是比较常用的方式。如果需要处理时区的问题,则可以使用公式进行转换。
最后,我们来看一下完整的时间戳转换为时间格式的代码:
// 时间戳转换为时间格式
function timestampToTime(timestamp) {
var date = new Date(timestamp * 1000);
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
var hour = date.getHours();
var minute = date.getMinutes();
var second = date.getSeconds();
return year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second;
}
// 示例
var timestamp = 1577836800; // 对应的时间戳为2020-01-01 00:00:00
var time = timestampToTime(timestamp);
console.log(time); // 输出:"2020-1-1 0:0:0"
这里我们封装了一个时间戳转换为时间格式的函数,再使用示例进行验证。