We "would have been"/"will be" together for three years in August

Solution 1:

Like any perfect couple, you're both partially right.

Assuming August is in the future, you could say:

We will have been together for three years in August.

The first sentence (We would have been together...) implies that your relationship was in the past (i.e. that you're no longer together), and it could also mean that August was in the past. Statements like this are called continuous conditional. You can learn more about continuous conditional expressions here. As the word "conditional" suggests, these phrases describe an outcome that is dependent on a condition, for instance:

If we had stayed together, we would have been together for three years in August.

This example would most often be used as a past unreal conditional + continuous, indicating that last August you would have been together for three years, if you had stayed together. It could also be future unreal conditional, meaning that by the time August comes, you would have been together for three years, if you had stayed together.

The second sentence (We will be together...) is not quite grammatically accurate yet. It implies that you will be together for three years, all in August. You can do a lot of things in August, like run a marathon:

We will run a marathon in August.

But you can't "be together for three years," all in August. For that reason, you add "have been" to describe that by the time August comes, you then will have been together for three years.