It is difficult to explain, indeed, unless you are a linguist. Yet I'll try.
When you are talking about a task or a process that took (or will take) a period of time, supposing that it was or should be accomplished, or about several events that has happened (or will happen) during a period of time, you say "за":
-- It will take me a month to finish this work -- Я закончу эту работу за месяц
-- It took him a week to have read this book -- Он прочитал эту книгу за неделю.
-- He deceived me twice in tree days -- Он обманул меня дважды за три дня.
"За" is also used to express that one event has happened or should happen a period of time before another event:
-- They must arrive one week before the contest -- они должны прибыть за неделю до соревнования
But when you are talking about a state that lasted or will last a period of time, or something that was used or will be used for a period of time, you say "на":
-- I will leave for a month -- я уеду на месяц
-- The house can be rented for a week or more -- дом можно арендовать на неделю или больше.
-- Lend me this book for a week -- одолжи мне эту книгу на неделю.
Одолжи мне эту книгу на неделю. Я за неделю прочитаю ее = Lend me this book for a week. I will have read it in a week.