java - 변환 - utc to datetime




Java에서 Epoch 이후 일, 주 및 월의 수를 구하십시오. (4)

Java에서 Epoch 이후 일, 주, 월 수를 얻으려고합니다.

Java Calendar 클래스는 calendar.get (GregorianCalendar.DAY_OF_YEAR) 또는 Calendar.get (GregorianCalendar.WEEK_OF_YEAR)과 같은 것을 제공합니다. 이는 좋은 시작이지만 꼭 필요한 것은 아닙니다.

Java에서이 작업을 수행 할 수있는 우아한 방법이 있습니까?


java.time

Java 8 이상에 내장 된 java.time 클래스를 사용하십시오.

LocalDate now = LocalDate.now();
LocalDate epoch = LocalDate.ofEpochDay(0);

System.out.println("Days: " + ChronoUnit.DAYS.between(epoch, now));
System.out.println("Weeks: " + ChronoUnit.WEEKS.between(epoch, now));
System.out.println("Months: " + ChronoUnit.MONTHS.between(epoch, now));

산출

Days: 16857
Weeks: 2408
Months: 553

매우 일반적인 요구 사항이 아니기 때문에 우아한 방법을 기대하지는 않습니다. 도와 드릴 수 없지만 왜 그걸하고 싶은지 궁금해합니다 ...

하지만 어쨌든, 내가 할 수있는 방법은 Calendar 에서 신기원을 뺀 다음 원하는 필드를 얻는 것입니다.

Calendar timeSinceEpoch = Calendar.getInstance();
timeSinceEpoch.add(Calendar.YEAR, -1970);

int yearsSinceEpoch = timeSinceEpoch.get(Calendar.YEAR);
int monthsSinceEpoch = timeSinceEpoch.get(Calendar.MONTH) + 12 * yearsSinceEpoch;

Joda Time 라이브러리 를 사용하면 매우 쉽게이 작업을 수행 할 수 있습니다. 표준 Java Date 및 Calendar 클래스를 사용하는 것과는 다른 시간에 관계없이 사용할 수 있습니다. 라이브러리를 사용하여 아래 예제를 살펴보십시오.

MutableDateTime epoch = new MutableDateTime();
epoch.setDate(0); //Set to Epoch time
DateTime now = new DateTime();

Days days = Days.daysBetween(epoch, now);
Weeks weeks = Weeks.weeksBetween(epoch, now);
Months months = Months.monthsBetween(epoch, now);

System.out.println("Days Since Epoch: " + days.getDays());
System.out.println("Weeks Since Epoch: " + weeks.getWeeks());
System.out.println("Months Since Epoch: " + months.getMonths());

이것을 실행하면 다음과 같은 결과를 얻습니다.

Days Since Epoch: 15122
Weeks Since Epoch: 2160
Months Since Epoch: 496

Calendar now = Calendar.getInstance();
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(0); // start at EPOCH

int days = 0
while (cal.getTimeInMillis() < now.getTimeInMillis()) {
  days += 1
  cal.add(Calendar.DAY_OF_MONTH, 1) // increment one day at a time
}
System.out.println("Days since EPOCH = " + days);




epoch