HI, Tony.I'm Anna .haha,,,,like you helped me several months ago,as a chinese ,I can help you with these questions.
1.我在上海学了三年的汉语。(只是一般的过去式,陈述性的)
2.我(一直)在上海学汉语已经三年了。(这里是含有还在学的意思的)
3.我已经在上海学了三年的汉语。(强调已经学过)
呵呵,“了”在中文里只是音节助词,也可表示一句话的结尾词,所以一般可用可不用。而分清楚说话人本人的意思则要靠另外加的词,如“一直”、“已经”and so on.
So ,now that you can type chinese fruently ,I believe in you that you can tell them.
FIGHTING!!!!