如何比较不同UTC日期的当日时间,返回当日更早的日期
解决UTC日期仅比较当日时分的需求
现有两个UTC日期字符串:
2022-11-01T22:16:19.844Z:过去日期,但当日的小时和分钟数更晚2022-11-08T20:16:19.844Z:未来日期,但当日的小时和分钟数更早
需求是返回当日时间更早(时分数值更小)的日期,而非整体时间更早的过去日期。直接使用getTime()比较完整日期会返回前者,不符合需求。
解决方案
核心思路是只提取并比较日期的当日时分部分,忽略年、月、日的时间差。具体实现步骤如下:
- 将日期字符串转为
Date对象 - 通过UTC时区方法获取小时和分钟数(规避时区差异影响)
- 将时分转换为总分钟数(小时×60+分钟),数值越小代表当日时间越早
- 比较两个总分钟数,返回对应日期
代码示例(JavaScript)
const dateStrA = "2022-11-01T22:16:19.844Z"; const dateStrB = "2022-11-08T20:16:19.844Z"; const dateA = new Date(dateStrA); const dateB = new Date(dateStrB); // 计算UTC当日时间的总分钟数 const calcTimeOfDayMinutes = (date) => { return date.getUTCHours() * 60 + date.getUTCMinutes(); }; const timeA = calcTimeOfDayMinutes(dateA); const timeB = calcTimeOfDayMinutes(dateB); // 返回时分更早的日期 const targetDate = timeA < timeB ? dateA : dateB; console.log(targetDate.toISOString()); // 输出:2022-11-08T20:16:19.844Z
补充说明
- 如果两个日期的时分完全相同,可根据实际需求补充逻辑(比如返回任意一个,或按完整日期排序)
- 使用
getUTCHours()和getUTCMinutes()确保基于UTC时区的时分计算,避免本地时区转换导致的误差
内容的提问来源于stack exchange,提问作者KingJoeffrey
相关产品推荐
相关产品推荐

