This is just a confirmation message of what Nasim said.
PersianCalendar has implemented very well. You can go through its
documentation to understand how it works. Here is a brief
description:
All new Java Calendars, as well as PersianCalendar and Sun's, hold a
Date object internally and work with them. date is actually
independent of the calendar and its main data is a long obeject
containing passed milliseconds from a starting-point date.
If you want to change a Gregorian Date to its Jalali correspondence,
follow these steps:
1. Create a Gregorian Calendar with your intended date
("2008/02/15").
2. Obtain it Date object.
3. Create an instance of PersianCalnedar using obtained Date.
4. Use DateFormatter or just get method of that instance to prepare
a suitable date String ("1386/11/5").