Причина, по которой время отображается неправильно, заключается в том, что когда вы регистрируете NSDate, оно будет отображаться в вашем местном часовом поясе.
Если вы хотите установить форматирование даты на определенный часовой пояс, вы можете использовать метод setTimeZone:
. Я заметил, что в вашем профиле написано, что вы находитесь в Индии, и, если я правильно помню, в Индии используется получасовой часовой пояс, который составляет 7:15, а не 12: 45.