Можно обойтись без крона.
1) Создаете сниппет, например getProductRealPrice с входящим параметром price-товара. В нем проверяете текущее время и исходя из этого меняете цену как нужно и возвращаете новую.
2) Во всех чанках, отвечающих за вывод карточки товара и на странице товара, в форму добавляете hidden input с каким-нибудь именем options и сниппетом в value.
<input type="hidden" name="options[realprice]" value="[[!getProductRealPrice]]">
Ну и соответственно там, где выводится цена, т.е. price, выводите этот сниппет.
3) Пишете плагин на событие msOnAddToCart в котором проверяете, если у добавляемого товара options[realprice] задан и отличается от price, то значит меняем цену товара на это значение.