Нет правильного и неправильного - есть контракт. Хорошие и опытные люди используют timestamp (можно в milliseconds) по тому что он не зависит от часового пояса, но в некоторых случаях это можно смело игнорировать
PS если прямо отвечать на вопрос про
как поступать с пробелами и двоеточием
то как и со всем остальным - urlencode. Есть в каждом языке подобная трансформация