package me.ji5.utils;
import android.content.Context;
import android.content.pm.PackageManager;
import android.text.format.DateUtils;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
/**
* Created by ohjongin on 14. 1. 17.
*/
public class MiscUtil {
protected final static boolean DEBUG_LOG = false;
protected final static String TAG = "MiscUtil";
/**
* Get international age from birthday
*
* @param birth_year
* @param birth_month Janunary is '1' although January is '0' at Calendar class
* @param birth_day
*
* @return A new instance of fragment NewEventFragment.
*/
public static int getInternationalAge(int birth_year, int birth_month, int birth_day) {
Calendar cal_birth = Calendar.getInstance ();
cal_birth.set(Calendar.YEAR, birth_year);
cal_birth.set(Calendar.MONTH, birth_month - 1);
cal_birth.set(Calendar.DATE, birth_day);
return getInternationalAge(cal_birth, Calendar.getInstance());
}
public static int getInternationalAge(long time_milis) {
return getInternationalAge(time_milis, System.currentTimeMillis());
}
public static int getInternationalAge(long time_milis, long now_milis) {
Calendar cal_birth = Calendar.getInstance ();
cal_birth.setTimeInMillis(time_milis);
Calendar cal_now = Calendar.getInstance ();
cal_now.setTimeInMillis(now_milis);
return getInternationalAge(cal_birth, cal_now);
}
public static int getInternationalAge(Calendar cal_birth, Calendar cal_now) {
if (cal_now == null) {
cal_now = Calendar.getInstance ();
}
int age = cal_now.get(Calendar.YEAR) - cal_birth.get(Calendar.YEAR);
if ((cal_birth.get(Calendar.MONTH) > cal_now.get(Calendar.MONTH))
|| (cal_birth.get(Calendar.MONTH) == cal_now.get(Calendar.MONTH)
&& cal_birth.get(Calendar.DAY_OF_MONTH) > cal_now.get(Calendar.DAY_OF_MONTH))) {
age--;
}
return age;
}
public static boolean hasPermission(Context context, String permission) {
int res = context.checkCallingOrSelfPermission(permission);
return (res == PackageManager.PERMISSION_GRANTED);
}
public static String getDateString(String format, long time_in_milis) {
if (format == null) format = "yyyy년 M월 d일 (EEE)";
SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.KOREA);
return sdf.format(new Date(time_in_milis));
}
public static int getDayDuration(int year1, int month1, int day1, int year2, int month2, int day2) {
Calendar src = Calendar.getInstance();
src.set(year1, month1, day1, 0, 0, 0);
Calendar dest = Calendar.getInstance();
dest.set(year2, month2, day2, 0, 0, 0);
return getDayDuration(src, dest);
}
public static int getDayDuration(Calendar src, Calendar dest) {
if (dest == null) {
dest = Calendar.getInstance();
dest.setTime(new Date());
}
long duration = getDayDuration(src.getTimeInMillis(), dest.getTimeInMillis());
return (int)(duration / DateUtils.DAY_IN_MILLIS);
}
public static int getDayDuration(long src, long dest) {
long duration = Math.abs(src - dest);
return (int)(duration / DateUtils.DAY_IN_MILLIS);
}
public static String getDayDurationString(int duration) {
String result;
if (duration == 7) {
result = "일주일 전";
} else if (duration == 1) {
result = "내일";
} else if (duration == 0) {
result = "오늘";
} else if (duration < 0) {
result = Math.abs(duration) + "일 후";
} else {
result = duration + "일 전";
}
return result;
}
public static String getValidString(String str) {
return (str == null) ? "" : str;
}
}