Отличный концептуальный вопрос.
В идеале это должно быть сделано в представлении. В моих приложениях я использую JavaScript для создания интерфейса. Пользователь взаимодействует с интерфейсом, и интерфейс отображает эти взаимодействия на запросы Ajax. Сервер возвращает временные метки (вместо отформатированных дат), и интерфейс отображает эти временные метки в отформатированные временные строки. Модель только «понимает» временные метки и безразлична к тому, как люди понимают время. Контроллер ничего не «понимает».
Однако CodeIgniter не работает таким образом. Вместо этого контроллер запрашивает информацию из модели, использует представление для отображения этой информации и возвращает представление клиенту. Представление - это просто шаблон для отображения информации. Он не может переводить информацию в другую форму так же, как JavaScript.
Важный принцип: контроллер должен относиться к бизнес-логике безразлично. Значение времени является частью бизнес-логики. Следовательно, контроллер не должен «понимать», что означает «временная метка», что необходимо для того, чтобы контроллер преобразовал временную метку в читаемую человеком строку. Это оставляет вид и модель.
Как уже говорилось, представление не "понимает" информацию; вокруг него размещаются только HTML-теги.
Осталось только модель. Когда клиент запрашивает ресурс, он должен сообщить серверу его локаль. Контроллер должен передать языковой стандарт модели, а модель должна «понять» языковой стандарт и соответствующим образом отформатировать строку времени.