Для ответа на вопрос необходимо использовать for или since, в зависимости от того, как долго дедушка носит шляпу. В данном случае, в скобках указано (years), т.е. подразумевается период, а не конкретное время начала действия.
Поэтому нужно использовать for.
Пример ответа:
How long has Grandpa worn his hat?
He has worn his hat for many years.
Ответ: He has worn his hat for many years.