Calculate the number of days passed from a given year
up vote
1
down vote
favorite
I have this code for calculating the number of days passed from a given year:
for (int currentYear = localDate.getYear() - 1; currentYear >= STARTING_YEAR; currentYear--){
LocalDate date = LocalDate.of(currentYear,5,5); //an arbitrary day of year
jdn += date.lengthOfYear();
}
jdn += localDate.getDayOfYear();
This code is working as expected.
I am not comfortable with choosing an arbitrary day to only get the length of the year. Is there any better approach?
java datetime
New contributor
add a comment |
up vote
1
down vote
favorite
I have this code for calculating the number of days passed from a given year:
for (int currentYear = localDate.getYear() - 1; currentYear >= STARTING_YEAR; currentYear--){
LocalDate date = LocalDate.of(currentYear,5,5); //an arbitrary day of year
jdn += date.lengthOfYear();
}
jdn += localDate.getDayOfYear();
This code is working as expected.
I am not comfortable with choosing an arbitrary day to only get the length of the year. Is there any better approach?
java datetime
New contributor
add a comment |
up vote
1
down vote
favorite
up vote
1
down vote
favorite
I have this code for calculating the number of days passed from a given year:
for (int currentYear = localDate.getYear() - 1; currentYear >= STARTING_YEAR; currentYear--){
LocalDate date = LocalDate.of(currentYear,5,5); //an arbitrary day of year
jdn += date.lengthOfYear();
}
jdn += localDate.getDayOfYear();
This code is working as expected.
I am not comfortable with choosing an arbitrary day to only get the length of the year. Is there any better approach?
java datetime
New contributor
I have this code for calculating the number of days passed from a given year:
for (int currentYear = localDate.getYear() - 1; currentYear >= STARTING_YEAR; currentYear--){
LocalDate date = LocalDate.of(currentYear,5,5); //an arbitrary day of year
jdn += date.lengthOfYear();
}
jdn += localDate.getDayOfYear();
This code is working as expected.
I am not comfortable with choosing an arbitrary day to only get the length of the year. Is there any better approach?
java datetime
java datetime
New contributor
New contributor
edited yesterday
200_success
127k15149412
127k15149412
New contributor
asked yesterday
Noussa
83
83
New contributor
New contributor
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
up vote
1
down vote
accepted
Your code scales poorly if there are many years between STARTING_YEAR
and localDate
.
Worse, if localDate
occurs before the STARTING_YEAR
, then your code behaves as if STARTING_YEAR
is the same year as localDate
, which is weird behavior.
To calculate the number of days between two dates, use DAYS.between()
.
import java.time.LocalDate;
import static java.time.temporal.ChronoUnit.DAYS;
…
long jdn = 1 + DAYS.between(LocalDate.ofYearDay(STARTING_YEAR, 1), localDate);
The 1 +
is necessary because the convention when subtracting dates is inclusive-exclusive, whereas your code uses an inclusive-inclusive range.
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
accepted
Your code scales poorly if there are many years between STARTING_YEAR
and localDate
.
Worse, if localDate
occurs before the STARTING_YEAR
, then your code behaves as if STARTING_YEAR
is the same year as localDate
, which is weird behavior.
To calculate the number of days between two dates, use DAYS.between()
.
import java.time.LocalDate;
import static java.time.temporal.ChronoUnit.DAYS;
…
long jdn = 1 + DAYS.between(LocalDate.ofYearDay(STARTING_YEAR, 1), localDate);
The 1 +
is necessary because the convention when subtracting dates is inclusive-exclusive, whereas your code uses an inclusive-inclusive range.
add a comment |
up vote
1
down vote
accepted
Your code scales poorly if there are many years between STARTING_YEAR
and localDate
.
Worse, if localDate
occurs before the STARTING_YEAR
, then your code behaves as if STARTING_YEAR
is the same year as localDate
, which is weird behavior.
To calculate the number of days between two dates, use DAYS.between()
.
import java.time.LocalDate;
import static java.time.temporal.ChronoUnit.DAYS;
…
long jdn = 1 + DAYS.between(LocalDate.ofYearDay(STARTING_YEAR, 1), localDate);
The 1 +
is necessary because the convention when subtracting dates is inclusive-exclusive, whereas your code uses an inclusive-inclusive range.
add a comment |
up vote
1
down vote
accepted
up vote
1
down vote
accepted
Your code scales poorly if there are many years between STARTING_YEAR
and localDate
.
Worse, if localDate
occurs before the STARTING_YEAR
, then your code behaves as if STARTING_YEAR
is the same year as localDate
, which is weird behavior.
To calculate the number of days between two dates, use DAYS.between()
.
import java.time.LocalDate;
import static java.time.temporal.ChronoUnit.DAYS;
…
long jdn = 1 + DAYS.between(LocalDate.ofYearDay(STARTING_YEAR, 1), localDate);
The 1 +
is necessary because the convention when subtracting dates is inclusive-exclusive, whereas your code uses an inclusive-inclusive range.
Your code scales poorly if there are many years between STARTING_YEAR
and localDate
.
Worse, if localDate
occurs before the STARTING_YEAR
, then your code behaves as if STARTING_YEAR
is the same year as localDate
, which is weird behavior.
To calculate the number of days between two dates, use DAYS.between()
.
import java.time.LocalDate;
import static java.time.temporal.ChronoUnit.DAYS;
…
long jdn = 1 + DAYS.between(LocalDate.ofYearDay(STARTING_YEAR, 1), localDate);
The 1 +
is necessary because the convention when subtracting dates is inclusive-exclusive, whereas your code uses an inclusive-inclusive range.
answered yesterday
200_success
127k15149412
127k15149412
add a comment |
add a comment |
Noussa is a new contributor. Be nice, and check out our Code of Conduct.
Noussa is a new contributor. Be nice, and check out our Code of Conduct.
Noussa is a new contributor. Be nice, and check out our Code of Conduct.
Noussa is a new contributor. Be nice, and check out our Code of Conduct.
Thanks for contributing an answer to Code Review Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f209043%2fcalculate-the-number-of-days-passed-from-a-given-year%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown