Is there a Java equivalent of DateTime.MinValue and DateTime.Today in the Java Date class? Or a way of achieving something similar?
I've realised how spoilt you are with the .NET datetime class, I also need the equivalent of AddDays(), AddMonths().
The value of this constant is equivalent to 00:00:00.0000000 UTC, January 1, 0001, in the Gregorian calendar. MinValue defines the date and time that is assigned to an uninitialized DateTime variable.
Min doesn't work because they're dates.
The de-facto Java datetime API is joda-time.
With it, you can get the current date/time by just constructing new DateTime()
.
Similarly, Without it, you can use Calendar.getInstance()
or new Date()
to obtain the current date/time.
MinValue
can be Calendar.getInstance(0)
/ new Date(0)
. This would use the default chronology - i.e. since January 1st, 1970. Since MinValue
returns Januar 1st, year 1, you can do that be simply specifying this date, using the appropriate constructor of DateTime
.
The other Answers may be correct but use outmoded classes.
The old date-time classes (java.util.Date/.Calendar etc.) were supplanted by Joda-Time, which in turn has been supplanted by the java.time framework built into Java 8 and later. The java.time classes are inspired by Joda-Time, defined by JSR 310, extended by the ThreeTen-Extra project, back-ported to Java 6 & 7 by the ThreeTen-Backport project, and adapted to Android in the ThreeTenABP project. See Tutorial.
To get the current moment on the timeline in UTC with a resolution of nanoseconds, use Instant
.
Instant now = Instant.now();
Instant
has three constants:
EPOCH
– 1970-01-01T00:00:00Z
MIN
– -1000000000-01-01T00:00Z
MAX
– 1000000000-12-31T23:59:59.999999999Z
To get the current moment for an offset-from-UTC, apply a ZoneOffset
to get an OffsetDateTime
.
OffsetDateTime now = OffsetDateTime.now( ZoneOffset.of( "-04:00" ) );
Better to apply a full time zone (offset plus rules for anomalies such as Daylight Saving Time) if known. Apply a ZoneId
to get a ZonedDateTime
.
ZonedDateTime now = ZonedDateTime.now( ZoneId.of( "America/Montreal" ) );
You can perform arithmetic.
ZonedDateTime dayLater = now.plusDays( 1 );
ZonedDateTime monthLater = now.plusMonths( 1 );
You can get the first moment of a day.
ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime tomorrowStart = now.toLocalDate().atStartOfDay( zoneId ); // Usually time-of-day of `00:00:00.0` but not always.
If you need only a date without time-of-day and without time zone, use LocalDate
. Similarly, LocalTime
for time-only without date and without time zone. Usually better to stick with Instant
and OffsetDateTime
/ZonedDateTime
as the Local…
types do not represent actual moments on the timeline (no offset or time zone means they are undefined).
LocalDate localDate = LocalDate.now( zoneId );
LocalTime localTime = LocalTime.now( zoneId );
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