I'm not a native-speaker, so sometimes present perfect is tricky to me.

a. They stayed three days ago. (OK)
b. They have stayed three days before. (???)
c. They (have) stayed before. (OK)

So, my book says a, b and c are possible. a, c are ok to me, but I think b is somewhat awkward. Is b ok in grammar? If so what is difference between a and b?

enter image description here

  • I agree with you that (b) sounds awkward. I can see a potential meaning for it, but the way a native speaker would express that meaning is: "They have stayed before for three days." – Ross Murray Dec 24 '18 at 8:21
  • All of these sentences on your photograph are very much unidiomatic. I would reject them all as proper sentences. They all are missing something like an adverb (e.g. "They stayed here before"). – lo tolmencre Dec 24 '18 at 16:40

Here are your original sentences and how they could reasonably be interpreted.

a) They stayed three days ago.

This means that they left the place three days ago. It doesn't indicate the duration of their stay. They could have stayed for a month.

b) They have stayed three days before.

This means that on one or more past visits to the place, they stayed there for a duration of three days. It doesn't indicate when they left the place.

c) They (have) stayed before.

This only means that they've stayed there before. It indicates neither the duration of their stay nor how long ago they left.

Note that your sentences could be improved so that they sound more idiomatic to native speakers:

a) They stayed (here / there) three days ago.
b) They have stayed (here / there) for three days before.
c) They have stayed (here / there) before.

  • You have effectively added 'there' to the three sentences in the question. I suggest you could remove those from your answer ... not that your answers don't sound natural; it's just that 'there' was not present in the question. – Ross Murray Dec 24 '18 at 9:48
  • @RossMurray I did it deliberately. The phrasing in the original sentences isn't as natural—and adding there doesn't change the meaning. I also added for to the second sentence. – Jason Bassford Supports Monica Dec 24 '18 at 9:52
  • My point is that you have changed the meaning of the sentences in the question. Why did you choose to add 'there' instead of 'here'? Replace those in your three versions and they still make sense. How do you know the intended meaning was not 'here'? – Ross Murray Dec 24 '18 at 10:03
  • @RossMurray Very well. I have presented the original versions, followed by additional examples. Although I'm still confused by why the additional word would change the analysis. – Jason Bassford Supports Monica Dec 24 '18 at 14:19
  • @RossMurray Those sentences are broken to begin with. One needs to add something like an adverb to fix them. He chose to fix them by adding in "here/ there" as an example. – lo tolmencre Dec 24 '18 at 16:45

Yes, it's valid English (sort of, see below), but the confusion comes from this: To an English speaker, A and B have a very different relationship between the words, and a very different meaning.

In A, "They stayed three days ago", the three days relates to 'ago'. We're saying exactly how far in the past the action "to stay" occurred, but we do not say how long the stay continued. They might have stayed for two days, or just an hour.

But in B, "They have stayed three days before", the three days relates to 'stayed'. A specific action -- to stay for three days -- happened at some point in the past, and we aren't saying how long ago that happened. It could've been last month or twenty years go.

And B does sound a little awkward, because in that phrase we would normally add the preposition 'for':

  • They have stayed for three days before.

This is better, because it makes it more clear that "three days" is in relation to the verb.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.