Convert Julian date to regular calendar date

How to convert a 7-digit Julian date to a format such as MM / dd / yyy?

+7
java julian-date
source share
5 answers

Found a useful site: http://www.rgagnon.com/javadetails/java-0506.html

This should do the trick:

public static int[] fromJulian(double injulian) { int jalpha,ja,jb,jc,jd,je,year,month,day; double julian = julian + HALFSECOND / 86400.0; ja = (int) julian; if (ja>= JGREG) { jalpha = (int) (((ja - 1867216) - 0.25) / 36524.25); ja = ja + 1 + jalpha - jalpha / 4; } jb = ja + 1524; jc = (int) (6680.0 + ((jb - 2439870) - 122.1) / 365.25); jd = 365 * jc + jc / 4; je = (int) ((jb - jd) / 30.6001); day = jb - jd - (int) (30.6001 * je); month = je - 1; if (month > 12) month = month - 12; year = jc - 4715; if (month > 2) year--; if (year <= 0) year--; return new int[] {year, month, day}; } 
+5
source share

The easy way is here and it will return about 100% accurate information.

 String getDobInfo(double doubleString){ SweDate sweDate = new SweDate(doubleString); int year = sweDate.getYear(); int month = sweDate.getMonth(); int day = sweDate.getDay(); // getting hour,minute and sec from julian date int hour = (int) Math.floor(sweDate.getHour()); int min = (int) Math .round((sweDate.getHour() - Math.floor(hour)) * 60.0); int sec = (int) (((sweDate.getHour() - Math.floor(hour)) * 60.0 - Math .floor(min)) * 60.0); return "DOB:(DD:MM:YY) "+day+":"+month+":"+year+" TOB:(HH:MM:SS) "+hour+":"+min+":"+sec; } 

Download the Swiss Ephemeris library and enjoy coding !!!

+3
source share

Do you really mean the Julian date, how do astronomers use it? Ordinal dates that are indicated as a year (four digits) and a day during that year (3 digits) are sometimes incorrectly called Julian dates.

 static String formatOrdinal(int year, int day) { Calendar cal = Calendar.getInstance(); cal.clear(); cal.set(Calendar.YEAR, year); cal.set(Calendar.DAY_OF_YEAR, day); Date date = cal.getTime(); SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy"); return formatter.format(date); } 

This will give you a date at 00:00 local time; you may want to set the time zone in calendars to GMT instead, depending on the application.

+1
source share

Starting with Java 8, this becomes single-line to get LocalDate :

 LocalDate.MIN.with(JulianFields.JULIAN_DAY, julianDay) .format(DateTimeFormatter.ofPattern("MM/dd/yyyy")); 

Where julianDay is your 7-digit number.

+1
source share

I see that there are already enough answers. But any question related to the calendar answers only halfway without mentioning joda-time ;-). Here how easy it is with this library

 // setup date object for the Battle of Hastings in 1066 Chronology chrono = JulianChronology.getInstance(); DateTime dt = new DateTime(1066, 10, 14, 10, 0, 0, 0, chrono); 
0
source share

All Articles