Я хочу продолжительность между 2 датами, распространяющиеся по нескольким единицам < /strong> (годы, месяцы, дни, часы, минуты и секунды).
Так что, если это 2 марта, 1 часа, а дата окончания - 3 мая 2 часа дня, я хочу 2 месяца, 1 день и 1 час, оставшаяся до конца < /em> (за исключением включения минут и секунды). < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p>. Нужно принять участие в учетных днях за месяц и время начала и конечных событий. , учитывая несколько дней в месяц, возможно с классом , но он игнорирует дату и время по длине между 2 датами. Я не хочу, чтобы « 2 месяца оставались в среднем», чтобы означать, что 60 дней осталось, я хочу, чтобы это означало месяцы в римском календаре.
Количество дней в месяц в римском календаре
или
source wikipedia tabledia < /p>
Например:
, если это 2 январь, и это. Месяцы , вы собираетесь подумать « О, это 2 марта! Продолжительность класс. Проблема заключается в том, что
период < /strong> вычисляет его как даты (годы, месяцы), что означает, что он учитывает дни месяца, но это полностью игнорирует начало и конец времени < /em> событий, а
Продолжительность < /strong>. месяцы). < /p>
Вот пример кода: < /p>
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
public class Countdown {
private DateTimeFormatter dateTimeFormat;
private ZonedDateTime currentZDT;
private ZonedDateTime endZDT;
public Countdown() {
dateTimeFormat = DateTimeFormatter.ofPattern("EEEE, LLLL dd, yyyy, 'at' hh:mm a");
setDateTimes(2025, Month.JUNE, 5, 2, 36); // June 5th, 2025, at 2:36 AM
System.out.println(String.format("%-45s%s", "Current date/time:", currentZDT.format(dateTimeFormat)));
System.out.println(String.format("%-45s%s", "End event date/time:", endZDT.format(dateTimeFormat)));
System.out.println();
System.out.println(String.format("%-45s%s", "Elapsed Time using ChronoUnit:", remainingDays1()));
System.out.println(String.format("%-45s%s", "Elapsed Time using: ZonedDateTime.until():", remainingDays2()));
System.out.println(String.format("%-45s%s", "Elapsed Time using the Duration Class:", remainingTimeDuration()));
System.out.println(String.format("%-45s%s", "Elapsed Time using the Period Class:", remainingTimePeriod()));
}
private void setDateTimes(int endYear, Month endMonth, int endDOM /* Day of Month */,
int endHour /* In 24-hour format */, int endMinute) {
ZoneId currentZone = ZoneId.systemDefault();
currentZDT = Instant.now().atZone(currentZone);
LocalDate endDate = LocalDate.of(endYear, endMonth, endDOM);
LocalTime endTime = LocalTime.of(endHour, endMinute);
endZDT = ZonedDateTime.of(endDate, endTime, currentZone);
}
// This returns part of what I need
public String remainingTimePeriod() {
/*
* Period DOES take into account the differences in the number of days in a
* month
* BUT it disregards the time of the current and end ZDT
*/
Period per = Period.between(LocalDate.from(currentZDT), LocalDate.from(endZDT));
int days = per.getDays();
int months = per.getMonths();
int years = per.getYears();
return String.format("%d year(s), %d month(s), and %d day(s)", years, months, days);
}
// This returns the other part
public String remainingTimeDuration() {
//Duration doesn't even have a way to get months
Duration dur = Duration.between(currentZDT, endZDT);
long days = dur.toDaysPart();
long hours = dur.toHoursPart();
long minutes = dur.toMinutesPart();
long seconds = dur.toSecondsPart();
return String.format("%02d day(s), %02d hour(s), %02d minute(s), and %02d second(s) left", days, hours, minutes,
seconds);
}
/*
* These return the total time left in 1 unit (it cant be spread across multiple)
*/
public long remainingDays1() {
return ChronoUnit.DAYS.between(currentZDT, endZDT);
}
public long remainingDays2() {
return currentZDT.until(endZDT, ChronoUnit.DAYS);
}
}
Это вывод. Когда дважды его запускаю, обратите внимание на время time
Current date/time: Sunday, May 04, 2025, at 02:37 AM
End event date/time: Thursday, June 05, 2025, at 02:38 AM
Elapsed Time using ChronoUnit: 32
Elapsed Time using: ZonedDateTime.until(): 32
Elapsed Time using the Duration Class: 32 day(s), 00 hour(s), 00 minute(s), and 31 second(s) left
Elapsed Time using the Period Class: 0 year(s), 1 month(s), and 1 day(s)
< /code>
и < /p>
Current date/time: Sunday, May 04, 2025, at 02:37 AM
End event date/time: Thursday, June 05, 2025, at 02:36 AM
Elapsed Time using ChronoUnit: 31
Elapsed Time using: ZonedDateTime.until(): 31
Elapsed Time using the Duration Class: 31 day(s), 23 hour(s), 58 minute(s), and 21 second(s) left
Elapsed Time using the Period Class: 0 year(s), 1 month(s), and 1 day(s)
Каждый метод поиска расстояния изменялся по примерам, за исключением периода, потому что он только рассчитывает разницу между 2 датами в несколько дней, игнорируя время, так как вам приходится конвертировать ZonedDateTime в объект LocalDate.
Если это даже лучше, чем дата).
[b] Я хочу продолжительность между 2 датами, распространяющиеся по нескольким единицам < /strong> (годы, месяцы, дни, часы, минуты и секунды).
Так что, если это 2 марта, 1 часа, а дата окончания - 3 мая 2 часа дня, я хочу 2 месяца, 1 день и 1 час, оставшаяся до конца < /em> (за исключением включения минут и секунды). < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p> < /p>. Нужно принять участие в учетных днях за месяц и время начала и конечных событий. [/b], учитывая несколько дней в месяц, возможно с классом , но он игнорирует дату и время по длине между 2 датами. Я не хочу, чтобы « 2 месяца оставались в среднем», чтобы означать, что 60 дней осталось, я хочу, чтобы это означало месяцы в римском календаре.
Количество дней в месяц в римском календаре
или source wikipedia tabledia < /p> Например: , если это 2 январь, и это. Месяцы , вы собираетесь подумать « О, это 2 марта! Продолжительность класс. Проблема заключается в том, что
период < /strong> вычисляет его как даты (годы, месяцы), что означает, что он учитывает дни месяца, но это полностью игнорирует начало и конец времени < /em> событий, а
Продолжительность < /strong>. месяцы). < /p> Вот пример кода: < /p> [code]import java.time.*; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit;
System.out.println(String.format("%-45s%s", "Elapsed Time using ChronoUnit:", remainingDays1())); System.out.println(String.format("%-45s%s", "Elapsed Time using: ZonedDateTime.until():", remainingDays2())); System.out.println(String.format("%-45s%s", "Elapsed Time using the Duration Class:", remainingTimeDuration())); System.out.println(String.format("%-45s%s", "Elapsed Time using the Period Class:", remainingTimePeriod()));
}
private void setDateTimes(int endYear, Month endMonth, int endDOM /* Day of Month */, int endHour /* In 24-hour format */, int endMinute) {
// This returns part of what I need public String remainingTimePeriod() {
/* * Period DOES take into account the differences in the number of days in a * month * BUT it disregards the time of the current and end ZDT */ Period per = Period.between(LocalDate.from(currentZDT), LocalDate.from(endZDT));
int days = per.getDays(); int months = per.getMonths(); int years = per.getYears();
return String.format("%d year(s), %d month(s), and %d day(s)", years, months, days);
}
// This returns the other part public String remainingTimeDuration() {
//Duration doesn't even have a way to get months Duration dur = Duration.between(currentZDT, endZDT);
long days = dur.toDaysPart(); long hours = dur.toHoursPart(); long minutes = dur.toMinutesPart(); long seconds = dur.toSecondsPart();
/* * These return the total time left in 1 unit (it cant be spread across multiple) */
public long remainingDays1() { return ChronoUnit.DAYS.between(currentZDT, endZDT); }
public long remainingDays2() { return currentZDT.until(endZDT, ChronoUnit.DAYS); }
}
[/code] Это вывод. Когда дважды его запускаю, обратите внимание на время time [code]Current date/time: Sunday, May 04, 2025, at 02:37 AM End event date/time: Thursday, June 05, 2025, at 02:38 AM
Elapsed Time using ChronoUnit: 32 Elapsed Time using: ZonedDateTime.until(): 32 Elapsed Time using the Duration Class: 32 day(s), 00 hour(s), 00 minute(s), and 31 second(s) left Elapsed Time using the Period Class: 0 year(s), 1 month(s), and 1 day(s) < /code> и < /p> Current date/time: Sunday, May 04, 2025, at 02:37 AM End event date/time: Thursday, June 05, 2025, at 02:36 AM
Elapsed Time using ChronoUnit: 31 Elapsed Time using: ZonedDateTime.until(): 31 Elapsed Time using the Duration Class: 31 day(s), 23 hour(s), 58 minute(s), and 21 second(s) left Elapsed Time using the Period Class: 0 year(s), 1 month(s), and 1 day(s) [/code] Каждый метод поиска расстояния изменялся по примерам, за исключением периода, потому что он только рассчитывает разницу между 2 датами в несколько дней, игнорируя время, так как вам приходится конвертировать ZonedDateTime в объект LocalDate. Если это даже лучше, чем дата).
Как мне получить продолжительность между 2 датами, распределенными по нескольким единицам (годы, месяцы, дни, часы, минуты и секунды), учитывая время начала и окончания . Класс периода делает это, но он игнорирует дату и время для длины между 2...
Как мне получить продолжительность между 2 датами, распространяющиеся по нескольким единицам (годы, месяцы, дни, часы, минуты и секунды), учитывая время начала и окончания . Класс периода делает это, но он игнорирует дату и время для длины между 2...
Мне нужно в моем приложении, чтобы иметь возможность рассчитать разницу в днях между двумя датами. Я попробовал несколько способов, которые дали бы нам разницу между днями будущего, но мне также нужно сделать прошлое.
в настоящее время у меня есть проблема, в которой я хотел бы получить расстояние между точками (хранящимися как LAT и Long) в 2 отдельных данных данных. как lat/long, а у другого есть 50 000 мест врачей как lat/long. >
Моя первая мысль была...
Мне нужно рассчитать расстояние на земле в метрах между полигонами географии, и я не могу найти ничего в экосистеме .NET, поэтому был вынужден позвонить по Postgres/Postgis DB. Пробовал nettopologysuite, projnet4geoapi, turf.sharp, ничего не...