λ λ μ§ μ¬μ΄μ λ μ§λ₯Ό κ³μ°νλ Java νλ‘κ·Έλ¨μ΄ νμν©λλ€.
- 첫 λ²μ§Έ λ μ§λ₯Ό μ λ ₯νμμμ€ (λ μΌ νκΈ°λ²; 곡백 ν¬ν¨ : βdd mm yyyyβ)
- λ λ²μ§Έ λ μ§λ₯Ό μ λ ₯νμμμ€.
- νλ‘κ·Έλ¨μ λ λ μ§ μ¬μ΄μ μΌ μλ₯Ό κ³μ°ν΄μΌν©λλ€.
μ€λ κ³Ό μ¬λ¦μ μ΄λ»κ² ν¬ν¨μν¬ μ μμ΅λκΉ?
λ΄ μ½λ :
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
public class NewDateDifference {
public static void main(String[] args) {
System.out.print("Insert first date: ");
Scanner s = new Scanner(System.in);
String[] eingabe1 = new String[3];
while (s.hasNext()) {
int i = 0;
insert1[i] = s.next();
if (!s.hasNext()) {
s.close();
break;
}
i++;
}
System.out.print("Insert second date: ");
Scanner t = new Scanner(System.in);
String[] insert2 = new String[3];
while (t.hasNext()) {
int i = 0;
insert2[i] = t.next();
if (!t.hasNext()) {
t.close();
break;
}
i++;
}
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(insert1[0]));
cal.set(Calendar.MONTH, Integer.parseInt(insert1[1]));
cal.set(Calendar.YEAR, Integer.parseInt(insert1[2]));
Date firstDate = cal.getTime();
cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(insert2[0]));
cal.set(Calendar.MONTH, Integer.parseInt(insert2[1]));
cal.set(Calendar.YEAR, Integer.parseInt(insert2[2]));
Date secondDate = cal.getTime();
long diff = secondDate.getTime() - firstDate.getTime();
System.out.println ("Days: " + diff / 1000 / 60 / 60 / 24);
}
}
λ΅λ³
μ
λ°μ΄νΈ : μΌλΆ ν΄λμ€κ° κ΅μ²΄λμ΄ 2013 λ
μ μλ λ΅λ³μ΄ ꡬμμ
λλ€. μ΄ μμ
μ μννλ μλ‘μ΄ λ°©λ²μ μ java.timeν΄λμ€λ₯Ό μ¬μ©νλ κ² μ
λλ€.
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd MM yyyy");
String inputString1 = "23 01 1997";
String inputString2 = "27 04 1997";
try {
LocalDateTime date1 = LocalDate.parse(inputString1, dtf);
LocalDateTime date2 = LocalDate.parse(inputString2, dtf);
long daysBetween = Duration.between(date1, date2).toDays();
System.out.println ("Days: " + daysBetween);
} catch (ParseException e) {
e.printStackTrace();
}
μ΄ μ루μ μ λ¬λ ₯ μΌ μκ° μλ μ€μ 24 μκ°μ μΌ μλ₯Ό μ 곡ν©λλ€. νμμ κ²½μ°
long daysBetween = ChronoUnit.DAYS.between(date1, date2)
μλ¬Έ λ΅λ³ (μλ° 8 μ΄μ )
νμνμ§ μμ λ¬Έμμ΄λ‘ λ³ννκ³ μμ΅λλ€. SimpleDateFormatκ·Έκ²μ λν μμ
μ΄ μμ΅λλ€-μ΄κ²μ μλνμμμ€ :
SimpleDateFormat myFormat = new SimpleDateFormat("dd MM yyyy");
String inputString1 = "23 01 1997";
String inputString2 = "27 04 1997";
try {
Date date1 = myFormat.parse(inputString1);
Date date2 = myFormat.parse(inputString2);
long diff = date2.getTime() - date1.getTime();
System.out.println ("Days: " + TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS));
} catch (ParseException e) {
e.printStackTrace();
}
νΈμ§ : μ΄ μ½λμ μ νμ±μ κ΄ν λͺ κ°μ§ ν λ‘ μ΄ μμμΌλ―λ‘ μ€μ λ‘ μ€λ
μ μ²λ¦¬ν©λλ€. κ·Έλ¬λ TimeUnit.DAYS.convertλ°λ¦¬ μ΄κ° μΌλ‘ λ³νλλ―λ‘ ν¨μμ μ λ°λκ° λ¨μ΄μ§λλ€ (μμΈν λ΄μ©μ λ§ν¬ λ λ¬Έμ μ°Έμ‘°). μ΄κ²μ΄ λ¬Έμ μΈ κ²½μ° diffμλμΌλ‘ λ³ν ν μλ μμ΅λλ€.
float days = (diff / (1000*60*60*24));
μ΄ floatκ° μ λ°λμ κ°μΌ νμλ μμ΅λλ€ int.
λ΅λ³
κ°μ₯ κ°λ¨ν λ°©λ² :
public static long getDifferenceDays(Date d1, Date d2) {
long diff = d2.getTime() - d1.getTime();
return TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS);
}
λ΅λ³
Java 8μμλ LocalDateand λ₯Ό μ¬μ©νμ¬μ΄λ₯Ό μν ν μ DateTimeFormatterμμ΅λλ€. λ‘λΆν° μ Javadoc μ LocalDate:
LocalDateλ λ μ§λ₯Ό λνλ΄λ λ³κ²½ λΆκ°λ₯ν λ μ§-μκ° κ°μ²΄μ΄λ©°, μ’ μ’ μ°μμΌλ‘ νμλ©λλ€.
ν¨ν΄μ μ¬μ©νμ¬ κ΅¬μ± ν μ μμ΅λλ€ DateTimeFormatter. λ€μμ Javadoc λ° λ΄κ° μ¬μ©ν κ΄λ ¨ ν¨ν΄ λ¬Έμμ
λλ€.
κΈ°νΈ -μλ―Έ- ν리μ ν μ΄μ -μ
Y β λ μ μλ β λ β 2004; 04
M / L- λ - μ«μ / ν μ€νΈ -7; 07; 7 μ; μΉ μ; μ μ΄
d- μ- μ«μ -10
μλ₯Ό λ€λ©΄ λ€μκ³Ό κ°μ΅λλ€.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
public class Java8DateExample {
public static void main(String[] args) throws IOException {
final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd MM yyyy");
final BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
final String firstInput = reader.readLine();
final String secondInput = reader.readLine();
final LocalDate firstDate = LocalDate.parse(firstInput, formatter);
final LocalDate secondDate = LocalDate.parse(secondInput, formatter);
final long days = ChronoUnit.DAYS.between(firstDate, secondDate);
System.out.println("Days between: " + days);
}
}
κ°μ₯ μ΅κ·Όμ μ λ ₯ / μΆλ ₯ μ :
23 01 1997
27 04 1997
Days between: 94
λ μ΅κ·Όμ 첫 λ²μ§Έ :
27 04 1997
23 01 1997
Days between: -94
κΈμ, λΉμ μ λ κ°λ¨ν λ°©λ²μΌλ‘ κ·Έκ²μ ν μ μμ΅λλ€ :
public static long betweenDates(Date firstDate, Date secondDate) throws IOException
{
return ChronoUnit.DAYS.between(firstDate.toInstant(), secondDate.toInstant());
}
λ΅λ³
μΌκ΄ μ μ½ μκ°μ΄ λ€κ° μμ λ λλΆλΆ / λͺ¨λ λ΅λ³μμ λ¬Έμ κ° λ°μνμ΅λλ€. JodaTimeμ μ¬μ©νμ§ μκ³ λͺ¨λ λ μ§μ λν μμ μ루μ μ λ€μκ³Ό κ°μ΅λλ€. λ¬λ ₯ κ°μ²΄λ₯Ό μ¬μ©ν©λλ€.
public static int daysBetween(Calendar day1, Calendar day2){
Calendar dayOne = (Calendar) day1.clone(),
dayTwo = (Calendar) day2.clone();
if (dayOne.get(Calendar.YEAR) == dayTwo.get(Calendar.YEAR)) {
return Math.abs(dayOne.get(Calendar.DAY_OF_YEAR) - dayTwo.get(Calendar.DAY_OF_YEAR));
} else {
if (dayTwo.get(Calendar.YEAR) > dayOne.get(Calendar.YEAR)) {
//swap them
Calendar temp = dayOne;
dayOne = dayTwo;
dayTwo = temp;
}
int extraDays = 0;
int dayOneOriginalYearDays = dayOne.get(Calendar.DAY_OF_YEAR);
while (dayOne.get(Calendar.YEAR) > dayTwo.get(Calendar.YEAR)) {
dayOne.add(Calendar.YEAR, -1);
// getActualMaximum() important for leap years
extraDays += dayOne.getActualMaximum(Calendar.DAY_OF_YEAR);
}
return extraDays - dayTwo.get(Calendar.DAY_OF_YEAR) + dayOneOriginalYearDays ;
}
}
λ΅λ³
κ°μ₯ μ’μ λ°©λ²μ 보λμ€λ‘ λ¬Έμμ΄λ‘ λ³νν©λλ€.)
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
//Dates to compare
String CurrentDate= "09/24/2015";
String FinalDate= "09/26/2015";
Date date1;
Date date2;
SimpleDateFormat dates = new SimpleDateFormat("MM/dd/yyyy");
//Setting dates
date1 = dates.parse(CurrentDate);
date2 = dates.parse(FinalDate);
//Comparing dates
long difference = Math.abs(date1.getTime() - date2.getTime());
long differenceDates = difference / (24 * 60 * 60 * 1000);
//Convert long to String
String dayDifference = Long.toString(differenceDates);
Log.e("HERE","HERE: " + dayDifference);
}
catch (Exception exception) {
Log.e("DIDN'T WORK", "exception " + exception);
}
}
λ΅λ³
μ¬μ©νλ€:
public int getDifferenceDays(Date d1, Date d2) {
int daysdiff = 0;
long diff = d2.getTime() - d1.getTime();
long diffDays = diff / (24 * 60 * 60 * 1000) + 1;
daysdiff = (int) diffDays;
return daysdiff;
}
λ΅λ³
Java λ μ§ λΌμ΄λΈλ¬λ¦¬κ° μμλμμ΅λλ€. Joda Time μ μ¬μ©νλ κ²μ΄ μ’μ΅λλ€ . μ€λ , μκ°λ λ±μ κ΄λ¦¬ν©λλ€.
μ΅μ μμ μ :
import java.util.Scanner;
import org.joda.time.DateTime;
import org.joda.time.Days;
import org.joda.time.LocalDate;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
public class DateTestCase {
public static void main(String[] args) {
System.out.print("Insert first date: ");
Scanner s = new Scanner(System.in);
String firstdate = s.nextLine();
System.out.print("Insert second date: ");
String seconddate = s.nextLine();
// Formatter
DateTimeFormatter dateStringFormat = DateTimeFormat
.forPattern("dd MM yyyy");
DateTime firstTime = dateStringFormat.parseDateTime(firstdate);
DateTime secondTime = dateStringFormat.parseDateTime(seconddate);
int days = Days.daysBetween(new LocalDate(firstTime),
new LocalDate(secondTime)).getDays();
System.out.println("Days between the two dates " + days);
}
}