Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert a Regular Date to Julian Date and vice versa in Java

I've written a simple code that converts a regular date to Julian date.

Here's the code for those who need the same conversion:

    public int convertToJulian(String unformattedDate)
    {
    /*Unformatted Date: ddmmyyyy*/
    int resultJulian = 0;
    if(unformattedDate.length() > 0)
    {
     /*Days of month*/
     int[] monthValues = {31,28,31,30,31,30,31,31,30,31,30,31};

     String dayS, monthS, yearS;
     dayS = unformattedDate.substring(0,2);
     monthS = unformattedDate.substring(3, 5);
     yearS = unformattedDate.substring(6, 10);

     /*Convert to Integer*/
     int day = Integer.valueOf(dayS);
     int month = Integer.valueOf(monthS);
     int year = Integer.valueOf(yearS); 

         //Leap year check
         if(year % 4 == 0)
         {
          monthValues[1] = 29;    
         }
         //Start building Julian date
         String julianDate = "1";
         //last two digit of year: 2012 ==> 12
         julianDate += yearS.substring(2,4);

         int julianDays = 0;
         for (int i=0; i < month-1; i++)
         {
          julianDays += monthValues[i];
         }
         julianDays += day;

             if(String.valueOf(julianDays).length() < 2)
             {
              julianDate += "00";
             }
             if(String.valueOf(julianDays).length() < 3)
             {
              julianDate += "0";
             }

        julianDate += String.valueOf(julianDays);
    resultJulian =  Integer.valueOf(julianDate);    
 }
 return resultJulian;
}

This code converts 01.01.2013 to 113001

What I want to do is to convert a Julian date to regular date without time details. For example: Julian date is 113029 ==> Regular date 29.01.2013

Please give me your ideas on how to do it.

Thanks.

like image 603
tanzer Avatar asked Jan 26 '13 10:01

tanzer


People also ask

What is Julian date in Java?

The Julian Day is a standard way of expressing date and time commonly used in the scientific community. It is expressed as a decimal number of whole days where days start at midday. This class represents variations on Julian Days that count whole days from midnight. The fields are implemented relative to EPOCH_DAY .


1 Answers

If you want 113029 ==> 29.01.2013 try

    String j = "113029";
    Date date = new SimpleDateFormat("Myydd").parse(j);
    String g = new SimpleDateFormat("dd.MM.yyyy").format(date);
    System.out.println(g);

output

29.01.2013
like image 150
Evgeniy Dorofeev Avatar answered Oct 04 '22 21:10

Evgeniy Dorofeev