What is the simplest way of getting a Calendar
object from a java.time.Instant
or java.time.ZonedDateTime
?
You can use following code to convert string date to calender format. String stringDate="23-Aug-10"; SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy"); Date date = formatter. parse(stringDate); Calendar calender = Calendar. getInstance(); calender.
You can format the calender date object when you want to display and keep that as a string.
Well, you can use the Calendar. setTime() and Calendar. getTime() method to convert the Calendar to Date and vice-versa.
You need to get the TimeZone using the instant and then you can get a calendar.
Calendar myCalendar = GregorianCalendar.from(ZonedDateTime.ofInstant(Instant.now(), ZoneId.systemDefault()));
Getting a Calendar
instant from ZonedDateTime
is pretty straight-forward, provided you know that there exists a GregorianCalendar#from(ZonedDateTime)
method. There was a discussion in Threeten-dev mail group, about why that method is not in Calendar
class. Not a very deep discussion though.
However, there is no direct way to convert from an Instant
to Calendar
. You've to have an intermediate state for that:
Instant instant = Instant.now(); ZonedDateTime zdt = ZonedDateTime.ofInstant(instant, ZoneId.systemDefault()); Calendar cal1 = GregorianCalendar.from(zdt);
This is probably because, as evident from the table on this oracle tutorial, an Instant
maps to Date
rather than a Calendar
. Similarly, a ZonedDateTime
maps to a Calendar
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With