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

如何计算指定datetime距今的分钟数?格式转换失败求解决方法

计算指定格式日期至今的分钟数解决方案

嘿,我懂你碰到的麻烦了——这种dd/mm/yyyy hh:mm:ss格式的日期字符串,确实和很多语言默认的解析规则不对付,转换失败太正常了。咱们一步步来搞定它:

核心思路

问题的关键在于正确解析自定义格式的日期字符串,只要把输入格式和解析规则对应上,计算时间差就会变得非常简单。下面以两种常用编程语言为例给出解决方案:


方案1:Python实现

Python的datetime模块里的strptime方法专门用来解析自定义格式的日期字符串,你只需要传入和输入完全匹配的格式符即可:

from datetime import datetime

# 你的目标日期字符串
target_date_str = "18/05/2018 15:00:11"

# 解析字符串为datetime对象,格式符必须严格对应输入格式
# %d=日, %m=月, %Y=4位年份, %H=24小时制小时, %M=分钟, %S=秒
target_datetime = datetime.strptime(target_date_str, "%d/%m/%Y %H:%M:%S")

# 获取当前时间
current_time = datetime.now()

# 计算时间差,转换成分钟数
time_difference = current_time - target_datetime
minutes_passed = time_difference.total_seconds() / 60

# 如果你需要整数结果,可以取整
minutes_passed_int = int(minutes_passed)

print(f"从目标时间到现在已过去约 {minutes_passed_int} 分钟")

为什么之前转换失败?大概率是你没指定正确的格式符,比如误用了%m/%d/%Y(月/日/年)的格式,或者把24小时制的%H写成了12小时制的%I,这些细节一定要和输入字符串完全匹配。


方案2:JavaScript实现

JavaScript的Date构造函数默认是月在前的格式,所以需要先拆分字符串,调整日期顺序后再创建日期对象:

const targetDateStr = "18/05/2018 15:00:11";

// 拆分日期和时间部分
const [dateSegment, timeSegment] = targetDateStr.split(' ');
// 拆分日、月、年(注意JS的月份是0-11,需要减1)
const [day, month, year] = dateSegment.split('/').map(Number);
// 拆分时、分、秒
const [hour, minute, second] = timeSegment.split(':').map(Number);

// 创建目标日期对象
const targetDate = new Date(year, month - 1, day, hour, minute, second);
// 获取当前时间
const currentTime = new Date();

// 计算时间差(毫秒转分钟)
const timeDiffMs = currentTime - targetDate;
const minutesPassed = Math.floor(timeDiffMs / (1000 * 60));

console.log(`从目标时间到现在已过去约 ${minutesPassed} 分钟`);

关键提醒

不管用哪种语言,核心都是让解析规则和输入日期的格式严格对应——比如输入是日/月/年,就不能用月/日/年的规则解析,小时是24制就不能用12制的格式符,这是避免转换失败的核心要点。

内容的提问来源于stack exchange,提问作者Tony Cross

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:32:16