자바 날짜/시간 계산 예제 코드 (다양한 예제) 2
프로그래밍/Android (Java)2015. 1. 27. 11:04
반응형
파일에서 날짜정보를 가져오기
File f = new File ( directory, file ); Date date = new Date ( f.lastModified ( ) ); Calendar cal = Calendar.getInstance ( ); cal.setTime ( date ); System.out.println( "Year : " + cal.get(Calendar.YEAR)); System.out.println( "Month : " + (cal.get(Calendar.MONTH) + 1 )); System.out.println( "Day : " + cal.get(Calendar.DAY_OF_MONTH)); System.out.println( "Hours : " + cal.get(Calendar.HOUR_OF_DAY)); System.out.println( "Minutes : " + cal.get(Calendar.MINUTE)); System.out.println( "Second : " + cal.get(Calendar.SECOND)); |
날짜형식으로 2000-01-03으로 처음에 인식을 시킨후
7일씩 증가해서 1년정도의 날짜를 출력해 주고 싶은데요.
SimpleDateFormat sdf = new SimpleDateFormat ( "yyyy-mm-dd" ); Calendar c = Calendar.getInstance ( ); for ( int i = 0 ; i < 48 ; i++ ) { c.clear ( ); c.set ( 2000 , 1 , 3 - ( i * 7 ) ); java.util.Date d = c.getTime ( ); String thedate = sdf.format ( d ); System.out.println ( thedate ); } |
쓰레드에서 날짜 바꾸면 죽는 문제
Main화면에 날짜와시간이Display되는 JPanel이 있습니다.
date로 날짜와 시간을 변경하면 Main화면의 날짜와 시간이 Display되는 Panel에
변경된 날짜가 Display되지 않고 Main화면이 종료되어 버립니다.
문제소스:
public void run ( ) { while ( true ) { try { timer.sleep ( 60000 ); } catch ( InterruptedException ex ) { } lblTimeDate.setText ( fGetDateTime ( ) ); repaint ( ); } } public String fGetDateTime ( ) { final int millisPerHour = 60 * 60 * 1000 ; String DATE_FORMAT = "yyyy / MM / dd HH:mm" ; SimpleDateFormat sdf = new SimpleDateFormat ( DATE_FORMAT ); SimpleTimeZone timeZone = new SimpleTimeZone ( 9 * millisPerHour, "KST" ); sdf.setTimeZone ( timeZone );<p></p> long time = System.currentTimeMillis ( ); Date date = new Date ( time ); return sdf.format ( date ); } |
해답:
// 날짜와 요일 구한다. timezone 으로 날짜를 다시 셋팅하시면 됨니다. public String getDate ( ) { Date now = new Date ( ); SimpleDateFormat sdf4 = new SimpleDateFormat ( "yyyy/MM/dd HH:mm EE" ); sdf4.setTimeZone ( TimeZone.getTimeZone ( "Asia/Seoul" ) ); return sdf4.format ( now ); } |
날짜와 시간이 유효한지 검사하려면...?
import java.util.*; import java.text.*; public class DateCheck { boolean dateValidity = true ; DateCheck ( String dt ) { try { DateFormat df = DateFormat.getDateInstance ( DateFormat.SHORT ); df.setLenient ( false ); Date dt2 = df.parse ( dt ); } catch ( ParseException e ) { this .dateValidity = false ; } catch ( IllegalArgumentException e ) { this .dateValidity = false ; } } public boolean datevalid ( ) { return dateValidity; } public static void main ( String args [] ) { DateCheck dc = new DateCheck ( "2001-02-28" ); System.out.println ( " 유효한 날짜 : " + dc.datevalid ( ) ); } } |
두 날짜 비교하기(아래보다 정확)
그냥 날짜 두개를 long(밀리 세컨드)형으로 비교하시면 됩니다...
이전의 데이타가 date형으로 되어 있다면, 이걸 long형으로 변환하고.
현재 날짜(시간)은 System.currentTimeMillis()메소드로 읽어들이고,
두수(long형)를 연산하여 그 결과 값으로 비교를 하시면 됩니다.
만약 그 결과값이 몇시간 혹은 며칠차이가 있는지를 계산할려면,
결과값을 Calender의 setTimeInMillis(long millis) 메소드를 이용해
설정한다음 각각의 날짜나 시간을 읽어오시면 됩니다
두 날짜 비교하기2
import java.util.*; import java.util.Calendar.*; import java.text.SimpleDateFormat; public class DayComparisonTest { public static void main(String args[]) { Calendar cal = Calendar.getInstance(); SimpleDateFormat dateForm = new SimpleDateFormat( "yyyy-MM-dd" ); Calendar aDate = Calendar.getInstance(); // 비교하고자 하는 임의의 날짜 aDate.set( 2001 , 0 , 1 ); Calendar bDate = Calendar.getInstance(); // 이것이 시스템의 날짜 // 여기에 시,분,초를 0으로 세팅해야 before, after를 제대로 비교함 aDate.set( Calendar.HOUR_OF_DAY, 0 ); aDate.set( Calendar.MINUTE, 0 ); aDate.set( Calendar.SECOND, 0 ); aDate.set( Calendar.MILLISECOND, 0 ); bDate.set( Calendar.HOUR_OF_DAY, 0 ); bDate.set( Calendar.MINUTE, 0 ); bDate.set( Calendar.SECOND, 0 ); bDate.set( Calendar.MILLISECOND, 0 ); if (aDate.after(bDate)) // aDate가 bDate보다 클 경우 출력 System.out.println( "시스템 날짜보다 뒤일 경우 aDate = " + dateForm.format(aDate.getTime())); else if (aDate.before(bDate)) // aDate가 bDate보다 작을 경우 출력 System.out.println( "시스템 날짜보다 앞일 경우 aDate = " + dateForm.format(aDate.getTime())); else // aDate = bDate인 경우 System.out.println( "같은 날이구만" ); } } |
[출처] 서비의 다락방 (www.yunsobi.com/blog/325)
반응형
'프로그래밍 > Android (Java)' 카테고리의 다른 글
Intent 활용 예시 (0) | 2015.01.27 |
---|---|
배경 패턴이미지 적용 (0) | 2015.01.27 |
자바 날짜/시간 계산 예제 코드 (다양한 예제) (0) | 2015.01.27 |
액션바에 overflow 메뉴 생성하기 (0) | 2015.01.27 |
WebView 사용하기 (0) | 2015.01.27 |
댓글()