Есть ли Java-эквивалент DateTime.MinValue и DateTime.Today в классе Java Date? Или способ добиться чего-то подобного?
Я понял, как испортил вам класс .NET datetime, мне также нужен эквивалент AddDays(), AddMonths().
Есть ли Java-эквивалент DateTime.MinValue и DateTime.Today в классе Java Date? Или способ добиться чего-то подобного?
Я понял, как испортил вам класс .NET datetime, мне также нужен эквивалент AddDays(), AddMonths().
Фактический API-интерфейс Java datetime joda-time.
С его помощью вы можете получить текущую дату/время, просто построив new DateTime()
.
Аналогично, без него вы можете использовать Calendar.getInstance()
или new Date()
для получения текущей даты/времени.
MinValue
может быть Calendar.getInstance(0)
/new Date(0)
. Это будет использовать хронологию по умолчанию, то есть с 1 января 1970 года. Поскольку MinValue
возвращает Januar 1-го, 1-го года, вы можете просто указать эту дату, используя соответствующий конструктор DateTime
.
+--------------------+----------------------------------------+----------------------------+
| .NET DateTime (C#) | Joda DateTime (Java) [See Note #2] | Java Date |
+--------------------+----------------------------------------+----------------------------+
| | | |
| DateTime.MinValue | new DateTime(Long.MIN_VALUE) | new Date(Long.MIN_VALUE) |
| | | [See Note #3] |
| | | |
| DateTime.Today | new DateTime().withTimeAtStartOfDay() | Messy [See Note #4] |
| | | |
| DateTime.Now | new DateTime() | new Date() |
| | | |
| DateTime.MaxValue | new DateTime(Long.MAX_VALUE) | new Date(Long.MAX_VALUE) |
| | | |
+--------------------+----------------------------------------+----------------------------+
Дополнительные примечания:
new Date(Long.MIN_VALUE)
в JavaДругие ответы могут быть правильными, но использовать устаревшие классы.
Предыдущие классы времени (java.util.Date/.Calendar и т.д.) были вытеснены Joda-Time, что в свою очередь был вытеснен java.time, встроенной в Java 8 и более поздние версии. Классы java.time вдохновлены Joda-Time, которые определяются JSR 310, расширенный проектом ThreeTen-Extra, перенесен на Java 6 и 7 проектом ThreeTen-Backport и адаптирован к Android в проекте ThreeTenABP. См. Tutorial.
Чтобы получить текущий момент на временной шкале в UTC с разрешением наносекунды, используйте Instant
.
Instant now = Instant.now();
Instant
имеет три константы:
EPOCH
- 1970-01-01T00:00:00Z
MIN
- -1000000000-01-01T00:00Z
MAX
- 1000000000-12-31T23:59:59.999999999Z
Чтобы получить текущий момент для offset-from-UTC, примените ZoneOffset
, чтобы получить OffsetDateTime
.
OffsetDateTime now = OffsetDateTime.now( ZoneOffset.of( "-04:00" ) );
Лучше применять полный часовой пояс (смещение плюс правила для аномалий, таких как летнее время), если известно. Примените ZoneId
, чтобы получить ZonedDateTime
.
ZonedDateTime now = ZonedDateTime.now( ZoneId.of( "America/Montreal" ) );
Вы можете выполнить арифметику.
ZonedDateTime dayLater = now.plusDays( 1 );
ZonedDateTime monthLater = now.plusMonths( 1 );
Вы можете получить первый момент дня.
ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime tomorrowStart = now.toLocalDate().atStartOfDay( zoneId ); // Usually time-of-day of `00:00:00.0` but not always.
Если вам нужна только дата без времени суток и без часового пояса, используйте LocalDate
. Аналогично, LocalTime
для времени без даты и без часового пояса. Обычно лучше придерживаться Instant
и OffsetDateTime
/ZonedDateTime
, поскольку типы Local…
не представляют действительные моменты на временной шкале (без смещения или временной зоны означает, что они undefined).
LocalDate localDate = LocalDate.now( zoneId );
LocalTime localTime = LocalTime.now( zoneId );
Большинство манипуляций с датами должны выполняться с использованием объекта Calendar.
http://download.oracle.com/javase/6/docs/api/java/util/Calendar.html
чтобы получить текущую дату:
Календарь calendar = Calendar.getInstance(); SimpleDateFormat dateFormat = новый SimpleDateFormat ( "dd/MM/yyyy" );
try {
System.out.println("Today: " + dateFormat.format(calendar.getTime()));
} catch (Exception e) {
e.printStackTrace();
}
Календарь событий http://download.oracle.com/javase/1.5.0/docs/api/java/util/Calendar.html
И дата http://download.oracle.com/javase/1.4.2/docs/api/java/util/Date.html
Theres также упрощает форматирование. http://download.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html