Если вы запустите следующий код:
SimpleDateFormat dateSdf = new SimpleDateFormat("dd MMM yyyy hh:mm:ss Z");
Date d = dateSdf.parse("18 Jul 2012 03:00:00 GMT");
System.out.println(d.getTime());
Вы получите вывод: 1342580400000
Итак, ваша проблема в том, что вы пропустили несколько цифр.