Конструктор java.util.Date
принимает миллисекунды с начала эпохи, не секунд:
Распределяет объект Date и инициализируетон должен представлять указанное количество миллисекунд со стандартного базового времени, известного как «эпоха», а именно 1 января 1970 года, 00:00:00 по Гринвичу.
Следующий код, который использует ms, работает:
String timestamp = "1538970640000"; // use ms NOT s
SimpleDateFormat formatter = new SimpleDateFormat("dd MMM 'at' hh:mm a z" );
String dateString = formatter.format(new Date(Long.parseLong(timestamp)));
08 Oct at 05:50 AM CEST
Демонстрация
Отчасти проблема, с которой вы столкнулись, заключается в том, что в вашем формате даты пропущен компонент года, который фактически приходилдо 1970 года.