Guide

I haven't done for months 现在完成时怎么用:3 步说“很久没做”

想说“我好几个月没吃垃圾食品了”,先判断这段时间是否延续到现在,再套 haven't + 过去分词 + for months。文中给 8 组可替换例句,并避开 since months、yesterday 和 How long haven't you 的常见坑。

I haven't done for months 现在完成时怎么用现在完成时 for monthsI haven't eaten for monthsfor months 和 since 区别很久没做 英语怎么说

想说“我好几个月没做某事了”,不要只背 I haven't done for months 这个半截模板。更稳的句子是:I haven't + 过去分词 + 具体事情 + for months。比如 I haven't eaten junk food for months. 重点有三个:动作要变成过去分词,for months 表示一段持续到现在的时间,句子最好说清“没做什么”。

英语现在完成时否定句被拆成 haven't、过去分词和 for months 三个结构槽位

先把中文拆成 3 块

中文里的“我好几个月没吃垃圾食品了”,听起来是一句话,但英语要先拆开:

中文信息英语位置例子
谁没做主语 + haven’t / hasn’tI haven’t
没做什么过去分词 + 宾语eaten junk food
多久没做for + 一段时间for months

合起来就是:

I haven't eaten junk food for months.
我好几个月没吃垃圾食品了。

British Council 的现在完成时资料把结构说得很清楚:现在完成时由 have/has + 过去分词 构成,可以表达从过去开始并持续到现在的情况。这里的“好几个月没吃”,不是单纯讲过去某一天,而是在说“从几个月前到现在都没吃”。

为什么不是逐词翻译“没有做”?

haven't 已经表示“没有”,后面的动词不能再用原形随便接。你要先选具体动作,再换成过去分词:

想表达自然英语不建议
我好几个月没吃垃圾食品了I haven’t eaten junk food for months.I haven’t eat junk food for months.
我好几个星期没用信用卡了I haven’t used my credit card for weeks.I haven’t use my credit card for weeks.
她很久没看电视了She hasn’t watched TV for a long time.She hasn’t watch TV for a long time.
我好几个月没运动了I haven’t done any exercise for months.I haven’t done for months.

注意最后一组。done 不是万能占位词。你可以说 done any exercisedone my homeworkdone much reading,但如果只说 I haven't done for months,读者会想问:你到底没做什么?

for months 和 since 怎么选?

for 后面接一段时间,since 后面接过去的时间点。Cambridge Grammar 和 EF 的语法说明都把这个边界讲得很一致:for monthsfor weeksfor a long time 是时间长度;since Junesince last weeksince 2024 是开始点。

I haven't played games for months.
我好几个月没玩游戏了。

I haven't played games since March.
我从三月起就没玩游戏了。

所以不要写:

I haven't played games since months.

如果你脑子里是“多久没做”,先用 for。如果你脑子里是“从什么时候开始没做”,再用 since

for months 和 since March 被放在左右两栏对比,一栏表示时间长度,一栏表示开始时间点

什么时候不用现在完成时?

现在完成时的关键不是“中文里有了”,而是这件事和现在有关。British Council 还提醒,带有明确过去时间点时,通常不用现在完成时。比如:

I didn't eat junk food yesterday.
我昨天没吃垃圾食品。

不要写成:

I haven't eaten junk food yesterday.

再看一个对比:

I haven't eaten junk food for months.
我已经好几个月没吃垃圾食品了。现在仍然是这个状态。

I didn't eat junk food for months, but now I do.
我过去有好几个月没吃垃圾食品,但现在吃了。

第一句把时间拉到现在。第二句是在讲一段已经结束的过去经历。

问“你多久没做了”怎么更自然?

很多学习者会直接套成 How long haven't you...?。它不是所有语境都绝对不能出现,但日常提问里,经常有两个更稳的问法。

第一种,问“从上次到现在多久了”:

How long has it been since you last watched a full English video?
你上次完整看一条英文视频到现在多久了?

第二种,问“你上次是什么时候”:

When did you last use your credit card?
你上次用信用卡是什么时候?

如果你只是练陈述句,先把这组练熟:

I haven't watched a full English video for weeks.
I haven't used my credit card for several weeks.
I haven't eaten junk food for months.
I haven't done any shadowing practice for a long time.

8 组替换练习

把中文按“谁 + 没做什么 + 多久”拆开,再套进去。

中文英语
我好几个星期没看英文视频了I haven’t watched English videos for weeks.
我好几个月没吃垃圾食品了I haven’t eaten junk food for months.
我很久没练跟读了I haven’t practised shadowing for a long time.
我好几天没复习这节课了I haven’t reviewed this lesson for days.
她很久没看电视了She hasn’t watched TV for a long time.
他好几个月没玩游戏了He hasn’t played games for months.
我们好几个星期没看电影了We haven’t watched any movies for weeks.
他们很久没一起学习了They haven’t studied together for a long time.

练的时候不要只看懂中文。你可以在 Video Language Learn 里找一条短视频,先单句循环听出动作,再把动作换成自己的句子:I haven't watched...I haven't practised...I haven't reviewed...。如果听写时发现自己漏掉了 havehas 或过去分词,就回到这一句重新跟读。

最容易错的 4 个地方

第一,忘记过去分词。

错:I haven't eat junk food for months.
对:I haven't eaten junk food for months.

第二,forsince 混用。

错:I haven't played games since months.
对:I haven't played games for months.
对:I haven't played games since March.

第三,只有 done,没有具体事情。

不完整:I haven't done for months.
更清楚:I haven't done any exercise for months.

第四,把昨天、上周这类明确过去时间塞进现在完成时。

错:I haven't watched TV yesterday.
对:I didn't watch TV yesterday.
对:I haven't watched TV for days.

一句话记住

I haven't done for months 这类搜索词真正要解决的,不是背一个固定中文译法,而是判断“没做”是否一直延续到现在。延续到现在,就用:

I haven't + 过去分词 + 具体事情 + for + 一段时间.

如果你能把 eat / eatenuse / usedwatch / watcheddo / done 这些动作逐句听清,再放进自己的真实场景里跟读,这个句型会比单背语法名称稳得多。

FAQ

I haven’t done for months 可以直接这样说吗?

通常不要把它当完整句。更自然的是 I haven't + 具体过去分词 + 宾语 + for months,例如 I haven't eaten junk food for months. done 可以用在 I haven't done any exercise for months. 这种具体搭配里。

for months 前面一定要用现在完成时吗?

不一定。for months 只是表示一段时间。若这段时间延续到现在,常用现在完成时;若说过去某段已经结束的经历,可以用过去式,例如 I didn't eat junk food for months, but now I do.

How long haven’t you… 自然吗?

很多场景下更自然的问法是 How long has it been since you last...?When did you last...? 例如 How long has it been since you last watched a full English video?

Practice Next

把这套方法放进一个真实视频里练

学习指南的价值不在收藏,而在马上完成一次训练。选一集真实英文视频,从盲听、逐句精听、跟读或听写开始。

开始免费试用 查看素材库
试用版-油管英文精听俱乐部 共 10 集
泰勒·斯威夫特:夺回属于她的一切
第 1 集

泰勒·斯威夫特:夺回属于她的一切

视频时长 06:13 · 建议学习 > 40 分钟

开始练习
艾玛·斯通:红毯、电影与一路走来的情绪旅程
第 2 集

艾玛·斯通:红毯、电影与一路走来的情绪旅程

视频时长 04:24 · 建议学习 > 50 分钟

开始练习
为什么你听得懂英语却说不出来
第 3 集

为什么你听得懂英语却说不出来

视频时长 06:45 · 建议学习 > 20 分钟

开始练习

FAQ

常见问题

I haven't done for months 可以直接这样说吗?

通常不要把它当完整句。更自然的是 I haven't + 具体过去分词 + 宾语 + for months,例如 I haven't eaten junk food for months。done 可以用在 I haven't done any exercise for months 这种具体搭配里。

for months 前面一定要用现在完成时吗?

不一定。for months 只是表示一段时间。若这段时间延续到现在,常用现在完成时;若说过去某段已经结束的经历,可以用过去式,例如 I didn't eat junk food for months, but now I do.

How long haven't you... 自然吗?

很多场景下更自然的问法是 How long has it been since you last...? 或 When did you last...? 例如 How long has it been since you last watched a full English video?

Start Practice

打开学习页,把今天的视频练透

从一段真实英文视频开始,按句听、跟读、听写、沉淀重点表达。

立即开始学习