Whether to use "in" + a period of time or "for" + a period of time is a popular question! The Grammar Exchange received a question on this topic earlier this year, and posted a comment on February 12. We are reposting that question and response here:
Q: Dear All,
Are the following sentences correct ? If yes, what is the difference ?
1) I've not eaten for 3 days.
2) I've not eaten in 3 days.
A:"For" is always correct to measure the duration of a period of time, so your sentence, "I've not eaten for two days," is fine.
After negatives and superlatives, "in" can also be used to talk about duration, so your sentence, "I've not eaten in two days," is also fine.
I haven't seen him for/in months.
It was the worst storm for/in ten years.
I've not eaten in two days. (your sentence)
I haven't eaten in two days. (AmE)
In the future, the prepositions "for" and "in" have different meanings. Today is February 12. "I'll be home in two weeks," "I should be home in two weeks," "I'm going to be home in two weeks," mean that in two weeks from now, on February 26, 2004, I'll begin my home visit. "In" + a future time expression refers to the beginning point at which something will begin, but it does not indicate the length of stay.
On the other hand, "I'll be home for two weeks," "I should be home for two weeks," and "I'm going to be home for two weeks," mean that the speaker will be home for a period of two weeks at some time in the future; "for" indicates the length of stay, but it doesn't tell when that stay will be.
Corresponding to "in" in the future is "ago" for the past. "I was home two weeks ago" indicates that the speaker was home on January 29, 2004, but does not say how long he stayed.
"I was home for two weeks" means that the speaker was home for two weeks' time, but doesn't say when the visit occurred.
So, in answer to your question, both "in" and "for" are correct in your sentences in the present perfect tense, negative.