[JAVA] 날짜 사용하기
Java에서 지원하는 SimpleDateFormat 및 DateFormat 클래스는 날짜 형식화에 사용됩니다. Java의 날짜 및 시간을 표시하거나 활용해야하는 곳에서 주로 사용됩니다. DateFormat은 입력으로 제공되는 특정 로케일을 기반으로 날짜를 문자열로 형식화하는 데 사용됩니다. 로케일은 사용자에게 코드를 더 많은 로케일로 만들기 위해 지역 및 언어를 지정하는 데 사용됩니다.
[현재 날짜와 시간 출력하기]
public static String getCurrentDate(String format) {
return getDateToString(format, System.currentTimeMillis());
}
public static String getDateToString(String format, long milliTimes){
//Locale.KOREA
SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.getDefault());
return sdf.format(milliTimes);
}
//호출방법 : 원하는 날짜와 시간 타입으로 호출
getCurrentDate("yyyy-MM-dd HH:mm:ss");
[현재 날짜에서 월, 일 계산하기]
public class Sample {
public static void main(String args[]) {
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
System.out.println("변경 전 현재 일시: " + df.format(cal.getTime()));
cal.add(Calendar.MONTH, 1); //월 더하기
cal.add(Calendar.DATE, -5); //일 빼기
cal.add(Calendar.YEAR, 1); //년 더하기
cal.add(Calendar.DATE, 3); // 일 더하기
cal.add(Calendar.HOUR_OF_DAY , 1);// 시간 더하기
cal.add(Calendar.MINUTE, 20); // 분 더하기
cal.add(Calendar.SECOND, 10); //초 더하기
System.out.println("변경 후: " + df.format(cal.getTime()));
}
}
[현재 날짜 출력하기]
public static String getDate(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(new Date());
}
[날짜 및 시간을 두자리 수로 맞추기]
public class DateUtil {
public static String getMonth(int month){
if(month > 0 && month < 10){
return "0" + String.valueOf(month);
}else{
return String.valueOf(month);
}
}
public static String getDay(int day){
if(day > 0 && day < 10){
return "0" + String.valueOf(day);
}else{
return String.valueOf(day);
}
}
public static String getTime(int num){
if(num > 0 && num < 10){
return "0" + String.valueOf(num);
}else{
return String.valueOf(num);
}
}
}
[오늘 날짜 기준으로 해당월의 시작일 가져오기]
public static String getCurrentFirstDateOfMonth(){
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, 1);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(cal.getTime());
}
[내가 설정한 날짜 기준으로 월시작일 가져오기]
public static String getMonthlyStartDate(Context context){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
String rtnDate="";
try {
int startDt = 10; //설정한 일자
if (startDt < 2) { //1일 때
cal.set(Calendar.DAY_OF_MONTH, 1);
} else {
Date sdate = sdf.parse(getDate()); //현재일자
String dateOfStartDayBase = cal.get(Calendar.YEAR) + "-" + DateUtil.getMonth((int) (cal.get(Calendar.MONTH) + 1)) + "-" + DateUtil.getDay(startDt);
Date edate = sdf.parse(dateOfStartDayBase);
if(sdate.getTime() < edate.getTime() ) {
cal.add(Calendar.MONTH, -1); //이전달
cal.set(Calendar.DAY_OF_MONTH, startDt);
}else{
cal.set(Calendar.DAY_OF_MONTH, startDt); //설정한 일자로 시작일을 변경
}
}
}catch (Exception e){
e.printStackTrace();
}
rtnDate = sdf.format(cal.getTime());
return rtnDate;
}
[오늘 날짜 기준으로 해당월의 마지막 날짜 가져오기]
public static String getCurrentEndDateOfMonth(){
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(cal.getTime());
}
[내가 설정한 날짜 기준으로 월 마지막날짜 가져오기]
public static String getDate(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(new Date());
}
public static String getMonthlyEndDate(Context context){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
String rtnDate="";
try {
int startDt = 1; //월 시작일
if (startDt < 2) { //1일 때
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
} else {
Date sdate = sdf.parse(getDate());
String dateOfStartDayBase = cal.get(Calendar.YEAR) + "-" + DateUtil.getMonth((int) (cal.get(Calendar.MONTH) + 1)) + "-" + DateUtil.getDay(startDt);
Date edate = sdf.parse(dateOfStartDayBase);
if(sdate.getTime() < edate.getTime() ) {
//cal.add(Calendar.MONTH, -1); //이전달
cal.set(Calendar.DAY_OF_MONTH, startDt - 1);
}else{
cal.add(Calendar.MONTH, +1); //다음달
cal.set(Calendar.DAY_OF_MONTH, startDt - 1);
}
}
}catch (Exception e){
e.printStackTrace();
return sdf.format(cal.getTime());
}
rtnDate = sdf.format(cal.getTime());
return rtnDate;
}
[오늘 날짜를 기준으로 오늘 날짜가 해당 월 안에 있는지 체크하는 방법]
public static boolean isDateCompare(){
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
Date today = null;
Date day1 = null;
Date day2 = null;
try{
today = format.parse(format.format(cal.getTime()));
day1 = format.parse(DateUtil.getMonthlyStartDate()); // 월 시작일
day2 = format.parse(DateUtil.getMonthlyEndDate()); // 월 종료일 체크
}catch (ParseException e){
e.printStackTrace();
}
if(today.compareTo(day1) >=0 && today.compareTo(day2) <=0){
return true;
}
return false;
}
[String문자열을 Date 타입으로 리턴 받기]
public static Date convertStringToDate(String dateInString){
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = format.parse(dateInString);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
//문자열을 Date 타입으로
public static String getDateToString(Date sdate){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(sdate);
}
[오늘 날짜 기준으로 이번달 남은 날 수 계산]
public static long getRemainDay(){
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date sdate = sdf.parse(getDate());
Date edate = sdf.parse(getMonthlyEndDate());
long diff = edate.getTime() - sdate.getTime();
long diffDays = diff / (24 * 60 * 60 * 1000);
if(diffDays > 0) diffDays = diffDays + 1;
return diffDays;
}catch (Exception e){
return 0;
}
}
[이전 날짜, 다음 날짜 가져오기]
public static String getPreviousDate(String curentDate){
Calendar cal = Calendar.getInstance();
cal.setTime(getStringToDate(curentDate));
cal.add(cal.DATE, -1);// 하루 전
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(cal.getTime());
}
public static String getNextDate(String curentDate){
Calendar cal = Calendar.getInstance();
cal.setTime(getStringToDate(curentDate));
cal.add(cal.DATE, +1);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(cal.getTime());
}
public static Date getStringToDate( String dateString) {
Calendar calendar = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date = sdf.parse(dateString);
return date;
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
[년도 가져오기]
public static int getYear(){
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
int year = cal.get(Calendar.YEAR);
//int month = cal.get(Calendar.MONTH);
//int day = cal.get(Calendar.DAY_OF_MONTH);
return year;
}
[현재 날짜와 시간 출력하기]
public static String getCurrentDate(String format) {
return getDateToString(format, System.currentTimeMillis());
}
public static String getDateToString(String format, long milliTimes){
//Locale.KOREA
SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.getDefault());
return sdf.format(milliTimes);
}
//호출방법 : 원하는 날짜와 시간 타입으로 호출
getCurrentDate("yyyy-MM-dd HH:mm:ss");
[현재 날짜에서 월, 일 계산하기]
public class Sample {
public static void main(String args[]) {
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
System.out.println("변경 전 현재 일시: " + df.format(cal.getTime()));
cal.add(Calendar.MONTH, 1); //월 더하기
cal.add(Calendar.DATE, -5); //일 빼기
cal.add(Calendar.YEAR, 1); //년 더하기
cal.add(Calendar.DATE, 3); // 일 더하기
cal.add(Calendar.HOUR_OF_DAY , 1);// 시간 더하기
cal.add(Calendar.MINUTE, 20); // 분 더하기
cal.add(Calendar.SECOND, 10); //초 더하기
System.out.println("변경 후: " + df.format(cal.getTime()));
}
}
[현재 날짜 출력하기]
public static String getDate(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(new Date());
}
[날짜 및 시간을 두자리 수로 맞추기]
public class DateUtil {
public static String getMonth(int month){
if(month > 0 && month < 10){
return "0" + String.valueOf(month);
}else{
return String.valueOf(month);
}
}
public static String getDay(int day){
if(day > 0 && day < 10){
return "0" + String.valueOf(day);
}else{
return String.valueOf(day);
}
}
public static String getTime(int num){
if(num > 0 && num < 10){
return "0" + String.valueOf(num);
}else{
return String.valueOf(num);
}
}
}
[오늘 날짜 기준으로 해당월의 시작일 가져오기]
public static String getCurrentFirstDateOfMonth(){
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, 1);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(cal.getTime());
}
[내가 설정한 날짜 기준으로 월시작일 가져오기]
public static String getMonthlyStartDate(Context context){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
String rtnDate="";
try {
int startDt = 10; //설정한 일자
if (startDt < 2) { //1일 때
cal.set(Calendar.DAY_OF_MONTH, 1);
} else {
Date sdate = sdf.parse(getDate()); //현재일자
String dateOfStartDayBase = cal.get(Calendar.YEAR) + "-" + DateUtil.getMonth((int) (cal.get(Calendar.MONTH) + 1)) + "-" + DateUtil.getDay(startDt);
Date edate = sdf.parse(dateOfStartDayBase);
if(sdate.getTime() < edate.getTime() ) {
cal.add(Calendar.MONTH, -1); //이전달
cal.set(Calendar.DAY_OF_MONTH, startDt);
}else{
cal.set(Calendar.DAY_OF_MONTH, startDt); //설정한 일자로 시작일을 변경
}
}
}catch (Exception e){
e.printStackTrace();
}
rtnDate = sdf.format(cal.getTime());
return rtnDate;
}
[오늘 날짜 기준으로 해당월의 마지막 날짜 가져오기]
public static String getCurrentEndDateOfMonth(){
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(cal.getTime());
}
[내가 설정한 날짜 기준으로 월 마지막날짜 가져오기]
public static String getDate(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(new Date());
}
public static String getMonthlyEndDate(Context context){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
String rtnDate="";
try {
int startDt = 1; //월 시작일
if (startDt < 2) { //1일 때
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
} else {
Date sdate = sdf.parse(getDate());
String dateOfStartDayBase = cal.get(Calendar.YEAR) + "-" + DateUtil.getMonth((int) (cal.get(Calendar.MONTH) + 1)) + "-" + DateUtil.getDay(startDt);
Date edate = sdf.parse(dateOfStartDayBase);
if(sdate.getTime() < edate.getTime() ) {
//cal.add(Calendar.MONTH, -1); //이전달
cal.set(Calendar.DAY_OF_MONTH, startDt - 1);
}else{
cal.add(Calendar.MONTH, +1); //다음달
cal.set(Calendar.DAY_OF_MONTH, startDt - 1);
}
}
}catch (Exception e){
e.printStackTrace();
return sdf.format(cal.getTime());
}
rtnDate = sdf.format(cal.getTime());
return rtnDate;
}
[오늘 날짜를 기준으로 오늘 날짜가 해당 월 안에 있는지 체크하는 방법]
public static boolean isDateCompare(){
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
Date today = null;
Date day1 = null;
Date day2 = null;
try{
today = format.parse(format.format(cal.getTime()));
day1 = format.parse(DateUtil.getMonthlyStartDate()); // 월 시작일
day2 = format.parse(DateUtil.getMonthlyEndDate()); // 월 종료일 체크
}catch (ParseException e){
e.printStackTrace();
}
if(today.compareTo(day1) >=0 && today.compareTo(day2) <=0){
return true;
}
return false;
}
[String문자열을 Date 타입으로 리턴 받기]
public static Date convertStringToDate(String dateInString){
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = format.parse(dateInString);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
//문자열을 Date 타입으로
public static String getDateToString(Date sdate){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(sdate);
}
[오늘 날짜 기준으로 이번달 남은 날 수 계산]
public static long getRemainDay(){
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date sdate = sdf.parse(getDate());
Date edate = sdf.parse(getMonthlyEndDate());
long diff = edate.getTime() - sdate.getTime();
long diffDays = diff / (24 * 60 * 60 * 1000);
if(diffDays > 0) diffDays = diffDays + 1;
return diffDays;
}catch (Exception e){
return 0;
}
}
[이전 날짜, 다음 날짜 가져오기]
public static String getPreviousDate(String curentDate){
Calendar cal = Calendar.getInstance();
cal.setTime(getStringToDate(curentDate));
cal.add(cal.DATE, -1);// 하루 전
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(cal.getTime());
}
public static String getNextDate(String curentDate){
Calendar cal = Calendar.getInstance();
cal.setTime(getStringToDate(curentDate));
cal.add(cal.DATE, +1);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(cal.getTime());
}
public static Date getStringToDate( String dateString) {
Calendar calendar = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date = sdf.parse(dateString);
return date;
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
[년도 가져오기]
public static int getYear(){
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
int year = cal.get(Calendar.YEAR);
//int month = cal.get(Calendar.MONTH);
//int day = cal.get(Calendar.DAY_OF_MONTH);
return year;
}