If I understand you, what you actually want is 11pm the day before the date you actually have. Note: Day 359 for a non-leap year (2013) is December 25.
Try this:
import org.joda.time.LocalDateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
public class JulianDateTester {
public static void main(String[] args) {
String julianDateString = "13359";
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyyDDD");
DateTime lcd = formatter.parseDateTime("20" + julianDateString);
DateTime lcdWeWant = lcd.minusDays(1).hourOfDay().withMaximumValue();
System.out.println("Input: " + julianDateString + ", formats as '" + lcd.toString());
System.out.println("The date we want is '" + lcdWeWant.toString() + "'");
System.out.println("The \"date\" we REALLY want is " + lcdWeWant.getMillis());
}
}
Which outputs:
Input: 13359, formats as '2013-12-25T00:00:00.000-06:00
The date we want is '2013-12-24T23:00:00.000-06:00'
The "date" we REALLY want is 1387947600000