Loading...
SimeonSimeonov avatar SimeonSimeonov 77 Точки

[Homework] Java Basics - Loops, Methods, Classes - Problem {7} - Days between Two Dates

Колеги ще може ли да помогнете  със 7ма задача от домашното за цикли в javaBasics.
Нещо въобще немога да се оправя със датите във java,всякакви неща от google пробвах ама все нещо гърми,все някакви библиотеки липсват и вече незнам какво да правя.
Условието е да се изчисли броя дни между 2 дати.

https://softuni.bg/downloads/svn/java-basics/Jan-2015/5.%20Java-Loops-Methods-Classes-Homework.zip

Mod Edit: Обърни внимание на т. 9 от Правилата на форума, която се отнася към именуване на темите.

Тагове:
2
Java Advanced 27/01/2015 16:15:14
RoYaL avatar RoYaL Trainer 6849 Точки

Здравей,

Вчера след лекцията разглеждахме тази задача с някои студенти.

Открихме, че в библиотеката за дати на Java 8 има ChronoUnit енумерация, която през различни интерфейси (за дни, и т.н.) изчислява интервали

Това е кодът:

Scanner sc = new Scanner(System.in);
String firstDate = sc.nextLine();
String secondDate = sc.nextLine();

LocalDate d1 = LocalDate.parse(firstDate, DateTimeFormatter.ofPattern("d-MM-yyyy"));
LocalDate d2 = LocalDate.parse(secondDate, DateTimeFormatter.ofPattern("d-MM-yyyy"));

System.out.println(ChronoUnit.DAYS.between(d1, d2));

Предишното решение до което бяхме стигнали е със SimpleDateFormatter да се парснат двете дати, да се вземат милисекундите им чрез getTime(), съответно разликата милисекунди от двете да се раздели на милисекундите в деня. Решението показва почти верни резултати, въпросът е, че разликата в милисекунди няма как да отчете високосните години по между, и примерно ако сметнеш разлика в дни между две дати през 10 години, ще даде ден-два разлика.

За щастие ChronoUnit.DAYS взима това предвид :)

 

2
27/01/2015 15:55:00
Filkolev avatar Filkolev 4482 Точки

Работата с дати в Java е проблем. В Java 8 има нов клас, който е доста адекватен като функционалност, но за жалост повечето теми по интернет и Stackoverflow обсъждат стария отвратителен клас Date. Съответно повечето решения, които се дават са с joda time и някакви подобни.

Според мен трябва да се разучи DateTime класа и да се покаже по-подробно на лекция, защото от всички езици, които съм ползвал до момента, само в Java все още не мога да се оправя в разумни срокове със задачи с дати и се бъхтя по около час за елементарни неща.

1
RoYaL avatar RoYaL Trainer 6849 Точки

Надявах се вече някой да ги е разучил и обяснил на достъпен език. За това потърсих в Google "Jon Skeet Java 8 dates". Е, не намерих това, което търсих, но нека се посмеем:

http://meta.stackexchange.com/questions/9134/jon-skeet-facts

 

0
RoYaL avatar RoYaL Trainer 6849 Точки

Kind of an overkill :)

Обсъждахме всъщност и този вариант с итерациите, но стигнахме до извода, че по итерация за ден е много.

0
27/01/2015 17:02:21
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.