如何从Unix时间戳中提取仅代表时间的Unix数值?
从Unix时间戳提取当日时间对应的Unix数值
要实现这个需求,核心是计算目标时间戳对应本地时区当日0点的时间戳,再用原时间戳减去该值,得到的结果就是当日时分秒对应的秒数(即你要的"仅代表当日时间的Unix数值")。
以下是JavaScript的实现代码:
function extractTime(timeStamp) { // 将秒级时间戳转为毫秒(JS Date对象以毫秒为单位) const date = new Date(timeStamp * 1000); // 创建当日0点的Date对象 const startOfDay = new Date(date.getFullYear(), date.getMonth(), date.getDate()); // 转换为秒级时间戳 const startOfDayUnix = Math.floor(startOfDay.getTime() / 1000); // 原时间戳减去当日0点时间戳,得到当日时间的秒数 return timeStamp - startOfDayUnix; } // 测试示例 const timeStamp = 1671682809; // 2022年12月22日星期四 上午11:20:09 GMT+07:00 const unixTimeOnly = extractTime(timeStamp); console.log(unixTimeOnly); // 输出 40809,对应11*3600 + 20*60 + 9 = 40809
关键说明:
- 代码默认基于本地时区计算当日0点,和你示例中的GMT+07:00时区匹配,确保结果准确。
- 如果需要基于UTC时区计算(忽略本地时区),只需把日期获取方法替换为UTC版本:
const startOfDay = new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()));
内容的提问来源于stack exchange,提问作者Hoài Vũ Lê
相关产品推荐
相关产品推荐

