Сначала c.get (Calendar.MONTH) возвращает 0 для января, 1 для февраля и т. Д.
Во-вторых, используйте DateFormat для вывода дат.
В-третьих, ваши проблемы являются отличным примером того, насколько неудобен Java Date API. Используйте Joda Time API, если можете. Это сделает вашу жизнь несколько проще.
Вот лучший пример вашего кода, который указывает часовой пояс:
public static void main(String[] args) {
final DateFormat dateFormat = SimpleDateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);
long l = 10000000L;
System.out.println("Long value: " + l);
Calendar c = new GregorianCalendar();
c.setTimeInMillis(l);
System.out.println("Date: " + dateFormat.format(c.getTime()));
l = 1000000000000L;
System.out.println("\nLong value: " + l);
c.setTimeInMillis(l);
System.out.println("Date: " + dateFormat.format(c.getTime()));
}