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

先把中文拆成 3 块
中文里的“我好几个月没吃垃圾食品了”,听起来是一句话,但英语要先拆开:
| 中文信息 | 英语位置 | 例子 |
|---|---|---|
| 谁没做 | 主语 + haven’t / hasn’t | I 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 exercise、done my homework、done much reading,但如果只说 I haven't done for months,读者会想问:你到底没做什么?
for months 和 since 怎么选?
for 后面接一段时间,since 后面接过去的时间点。Cambridge Grammar 和 EF 的语法说明都把这个边界讲得很一致:for months、for weeks、for a long time 是时间长度;since June、since last week、since 2024 是开始点。
I haven't played games for months.
我好几个月没玩游戏了。
I haven't played games since March.
我从三月起就没玩游戏了。
所以不要写:
I haven't played games since months.
如果你脑子里是“多久没做”,先用 for。如果你脑子里是“从什么时候开始没做”,再用 since。

什么时候不用现在完成时?
现在完成时的关键不是“中文里有了”,而是这件事和现在有关。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...。如果听写时发现自己漏掉了 have、has 或过去分词,就回到这一句重新跟读。
最容易错的 4 个地方
第一,忘记过去分词。
错:I haven't eat junk food for months.
对:I haven't eaten junk food for months.
第二,for 和 since 混用。
错: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 / eaten、use / used、watch / watched、do / 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
把这套方法放进一个真实视频里练
学习指南的价值不在收藏,而在马上完成一次训练。选一集真实英文视频,从盲听、逐句精听、跟读或听写开始。