Введите и сравните две даты

1

Я не очень хорошо знаком с объектами даты, поэтому я подумал, что спрошу, как я попрошу пользователя ввести дату, совместимую со следующим методом, который я нашел, чтобы найти разницу в днях:

 public long diferenciaFecha(LocalDate pfecha1, LocalDate pfecha2){
  LocalDate fecha1 = pfecha1;
  LocalDate fecha2 = pfecha2;

  Period p = Period.between(fecha1, fecha2);
  long resul = ChronoUnit.DAYS.between(fecha1, fecha2);

  System.out.println(" Han pasado: " + resul + " dias.)");

  return resul;

      }   
 }

Каким будет формат ввода?

Заранее большое спасибо

Теги:
date

2 ответа

1
Лучший ответ

Программирование, связанное с временем, может быть очень расстраивающим. Временные классы были изобретены, чтобы помочь манипулировать значениями времени и помочь преобразовать текстовые и числовые значения в значения времени. Если вы используете классы Java, такие как LocalDate и ChronoUnit, вы можете найти их на сайте Oracle с помощью простого поиска в Google имени класса.

Если у вас возникли проблемы с днями, я настоятельно рекомендую вам дать обзор временных классов, потому что когда вы получаете возможность манипулировать часами и часовыми поясами и т.д. это будет сложнее.

http://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html

"публичный конечный класс LocalDate

расширяет объект

реализует Temporal, TemporalAdjuster, ChronoLocalDate, Serializable

Дата без временной зоны в календарной системе ISO-8601, например, 2007-12-03. "

http://docs.oracle.com/javase/8/docs/api/java/time/temporal/ChronoUnit.html

1

Ваш код, похоже, использует новый пакет java.time в Java 8. Чтобы убедиться, посмотрите инструкции import.

Класс LocalDate использует статический заводский метод для создания экземпляров, а не конструкторов. См. Документ для нескольких методов.

LocalDate now = LocalDate.now ( ZoneId.of( "America/Montreal" ) );

Или…

LocalDate localDate = LocalDate.of( 2014, 1, 23 );  // year, month, day.

Если пользователь вводит текст, проанализируйте его как числа.

LocalDate localDate = LocalDate.of( Integer.parseInt( "2014") , Integer.parseInt( "1") , Integer.parseInt( "23") );

Или проанализируйте как одну строку в стандартном формате ISO 8601.

LocalDate localDate = LocalDate.parse( "2014-01-23" ) ;

Для других форматов поиск Qaru для многих обсуждений и примеры синтаксического анализа строк с классом DateTimeFormatter.


О java.time

Рамка java.time встроена в Java 8 и более поздние версии. Эти классы вытесняют неприятные старые устаревшие классы времени, такие как java.util.Date, Calendar и SimpleDateFormat.

Проект Joda-Time, теперь в режиме обслуживания, советует перейти на классы java.time.

Чтобы узнать больше, ознакомьтесь с учебным пособием Oracle. И поиск Qaru для многих примеров и объяснений. Спецификация - JSR 310.

Используя JDBC-драйвер, совместимый с JDBC 4.2 или более поздней версией, вы можете обменивать объекты java.time непосредственно с вашей базой данных. Нет необходимости в строках или классах java.sql. *.

Где можно получить классы java.time?

  • Java SE 8, Java SE 9 и более поздние версии
    • Встроенный.
    • Часть стандартного Java API с интегрированной реализацией.
    • Java 9 добавляет некоторые незначительные функции и исправления.
  • Java SE 6 и Java SE 7
    • Большая часть функциональных возможностей java.time включена обратно в Java 6 и 7 в ThreeTen-Backport.
  • Android
    • Более поздние версии реализаций пакетов Android классов java.time.
    • Для более ранних Android проект ThreeTenABP адаптирует ThreeTen-Backport (упомянутый выше). См. Раздел Как использовать ThreeTenABP....

Проект ThreeTen-Extra расширяет java.time с дополнительными классами. Этот проект является доказательством возможных будущих дополнений к java.time. Здесь вы можете найти полезные классы, такие как Interval, YearWeek, YearQuarter и другие.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню