You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用date-fns从毫秒级Unix时间戳中剥离日期仅保留时分秒?

使用date-fns提取仅含时分秒的时间戳(基于毫秒级Unix时间戳)

当然可以用date-fns实现这个需求,核心思路是计算目标时间与当天0点的时间差,这个差值就是仅代表时分秒的毫秒数,可直接用于跨日期的时间比较。下面是两种可行的实现方式:

方法一:手动提取时分秒计算

  1. 先将毫秒级时间戳转换为日期对象(注意fromUnixTime接受的是秒级时间戳,所以需要先把毫秒数除以1000):
import { fromUnixTime } from 'date-fns';

const msTimestamp = 1699999999000; // 示例毫秒级时间戳
const dateObj = fromUnixTime(msTimestamp / 1000);
  1. 用date-fns的时间提取函数获取时分秒,再计算对应的总毫秒数:
import { getHours, getMinutes, getSeconds } from 'date-fns';

const hours = getHours(dateObj);
const minutes = getMinutes(dateObj);
const seconds = getSeconds(dateObj);

// 得到仅含时分秒的毫秒级时间戳(范围0~86399999)
const timeOnlyTimestamp = hours * 3600000 + minutes * 60000 + seconds * 1000;

方法二:用date-fns工具函数直接计算时间差

这种方式更简洁,避免手动计算出错:

import { fromUnixTime, startOfDay, differenceInMilliseconds } from 'date-fns';

const msTimestamp = 1699999999000;
const dateObj = fromUnixTime(msTimestamp / 1000);

// 获取当天0点的日期对象
const dayStart = startOfDay(dateObj);
// 计算目标时间与当天0点的毫秒差,即仅含时分秒的时间戳
const timeOnlyTimestamp = differenceInMilliseconds(dateObj, dayStart);

两种方法得到的timeOnlyTimestamp都可以直接用来比较不同日期的时间先后,比如不同日期的14:30:00会得到相同的数值,15:00:00的数值会大于前者。

内容的提问来源于stack exchange,提问作者Nathan Jackson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 05:50:08