스마트기기개발관련/안드로이드 개발

안드로이드 android 시간 (시, 분, 초) 달력 날짜 관련

AlrepondTech 2020. 9. 19. 06:23
반응형

 

 

 

 

=================================

=================================

=================================

 

 

 

 

출처: http://creon.tistory.com/274


현재 시간을 받아오는건..

물론,  Calendar 클래스를 이용해서 받아오면 되긴 한다.. 

문제는 1분마다 업데이트가 안된다는거지.

 그래서 안드로이드에서는 브로드캐스트리시버라는게 있다..

뭐하는거냐면 안드로이드에서 보내는 신호를 받는 역활을 하는거다. 자세한거는 안드로이드 개발페이지에 가면 있다.

 http://developer.android.com/reference/android/content/BroadcastReceiver.html

당연하지만 영어로 되어 있다. ㅋ 

뭐 여하튼..
 
시간 받는 방법 중에는 스래드를 졸라게 돌려서 받는 방법이 있지만  
이런짓을 하면 cpu가 존나 돌아가니까 좋은 방법은 아니고

 

//특정 엑티비티..
class MyClass extends Activity {

    //.....

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        ......

        //인텐트 필터 설정

        IntentFilter filter = new IntentFilter();

        filter.addAction(Intent.ACTION_TIME_TICK);

        MyReceiver mr = new MyReceiver();

        registerReceiver(mr, filter);

        ....

    }

}

//브로드 캐스트 리시버를 상속받은 클래스

public class MyReceiver extends BroadcastReceiver {

    //여기서 처리..

    @Override

    public void onReceive(Context context, Intent intent) {

        // 1분 마다 여기서 리시브가 된다..

        if (intent.getAction().equals(Intent.ACTION_TIME_TICK)) {

            //doSomting

            //여기서 시간을 설정하면 된다.

        }

    }

 

위와 같이 처리를 하면  1분마다 MyReciver가 OnReceive에서  받게 된다.

끝.. 나머지는 알아서 처리하면 된다.

 

 

=================================

=================================

=================================

 

 

출처: http://noritersand.tistory.com/56

 

java.util

Class Calendar

 

java.util

Class GregorianCalendar

 

 

Calendar클래스는 날짜와 시간을 객체 모델링 화 한 클래스로 년, 월, 일, 요일, 시, 분, 초까지의 시간과 날짜와 관련된 정보를 제공한다. 

만약 시스템으로부터 현재 시스템 시간 정보를 얻기 위해서는 getInstance() 라는 정적 메소드를 이용하여 객체를 생성한다. 생성된 Calendar 클래스 객체는 시스템의 현재 날짜와 시간 정보를 가지며, 이 객체가 생성되면 갖고 있는 시간 정보들은 get() 메소드를 이용하여 쉽게 사용 할 수 있다. getInstance() 메소드는 내부적으로 GregorianCalendar 객체를 생성하여 돌려주므로 GregorianCalendar 객체를 직접 생성하여 시간 정보를 구할 수 있다.

 

기타 날짜 관련 클래스로 java.util.Date 가 있으나 국제화 기능과 함께 각종 부가 기능이 추가된

Calendar류의 클래스를 사용할 것을 권장 한다.

 

GregorianCalendar - 주요 메서드

  • void setTimeZone(TimeZone zone): TIME ZONE을 설정한다.
GregorianCalendar today 
        = (GregorianCalendar) Calendar.getInstance(TimeZone.getTimeZone("GMT"));
today.setTimeZone(TimeZone.getTimeZone("Asia/Calcutta"));

 

  • public int get(int field): field에 해당하는 날짜를 반환한다. field는 Calendar 클래스에서 정의된 상수이다. 예) get(Calendar.MONTH); //달력의 월(월-1)을 반환한다.
  • public void set(int field, int value): field에 해당하는 날짜를 value 값으로 바꾼다. 예) set(Calendar.YEAR, 2000) //달력의 년을 2000년으로 바꾼다.
  • public final void set(int year, int month, int date)
  • public final void set(int year, int month, int date, int hour, int minute)
  • public final void set(int year, int month, int date, int hour, int minute, int second): calendar의 날짜를 바꾼다.
  • public void add(int field, int amount): field에 해당하는 날짜를 amount 만큼 증가시킨다.
  • void roll(int field, boolean up)
  • void roll(int field, int amount): 날짜 정보를 변경한다.

※ add() 메소드는 일수나 월수를 더해서 그 값이 한 달이나 일 년의 범위를 넘어서면 월이나 연수를 증가시키지만 roll() 메소드는 날짜에 많은 수를 더해도 월이 바뀌지 않고 그 달의 처음으로 다시 되돌아가 계산한다.

 

Calendar - 상수

 

YEAR, MONTH, DATE, HOUR, MINUTE, SECOND, MILLISECOND

년, 월, 일, 시, 분, 초, 1/1000초를 나타낸다.

 

JANUARY(=0), FEBRUARY(=1), MARCH, APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER(=11)

 : 1월 ~ 12월을 차례로 나타낸다. 주의할 점은 0부터 시작된다는 것이다. 달력의 정확한 월을 알고자한다면 다음과 같이 해야 한다.

예) get(Calendar.MONTH)+1

 

SUNDAY(=1), MONDAY(=2), TUESDAY, WEDNESDAY

 ,THURSDAY, FRIDAY, SATURDAY(=7)

 : 각각의 요일을 나타낸다.

 

DAY_OF_WEEK : 요일을 얻거나 바꾸자할 때 사용한다.

DAY_OF_MONTH : 일자를 나타낸다.(DATE와 동일)

AM_PM : 오전/오후

 

Calendar - 주요 메서드

 

static Calendar getInstance()

 : 현재 시스템의 시간 정보를 얻는 Calendar 클래스 객체를 생성한다.

 

int getActualMaximum(int field)

 : 해당 월의 마지막일 → int endDays = cal.getActualMaximum(Calendar.DATE);

 

example

 

현재시각 가져오기

Calendar rightNow = Calendar.getInstance();
Calendar rightNow2 = new GregorianCalendar();
GregorianCalendar rightNow3 = new GregorianCalendar(); // 직접 그레고리언 캘런더 생성
System.out.println("오늘 날짜는 " + rightNow.get(Calendar.YEAR) + "년 "
        + (rightNow.get(Calendar.MONTH) - Calendar.JANUARY + 1) + "월 "
        + rightNow.get(Calendar.DATE) + "일 ");

특정한 달의 시작일과 마지막일 구하기

public static void main(String[] args) {
    Calendar cc = Calendar.getInstance();
 
    // 2013년 2월 26일 설정
    cc.set(2013, 1, 19); // 월은 0~11이므로
    System.out.println("날짜 : " + print(cc));
 
    int w;
    // 주(week)의 시작날짜 구하기
    Calendar sday = (Calendar) cc.clone();
 
    // cc객체를 복사하여 새로운 객체 생성
    w = cc.get(Calendar.DAY_OF_WEEK) - 1;
    sday.add(Calendar.DAY_OF_MONTH, w * (-1));
    System.out.println("주 시작날짜 : " + print(sday));
 
    // 주(week)의 마지막날짜 구하기
    Calendar eday = (Calendar) cc.clone();
    w = 7 - cc.get(Calendar.DAY_OF_WEEK);
    eday.add(Calendar.DAY_OF_MONTH, w);
 
    System.out.println("주 마지막 날짜 : " + print(eday));
 
}
 
public static String print(Calendar cal) {
    String[] week = { "일", "월", "화", "수", "목", "금", "토" };
 
    String str = String.format("%d %d %d %s요일", cal.get(Calendar.YEAR),
            cal.get(Calendar.MONDAY) + 1, cal.get(Calendar.DATE),
            week[cal.get(Calendar.DAY_OF_WEEK) - 1]);
    return str;
}

 

 

 

 

반응형

 

728x90

 

 

 

=================================

=================================

=================================

 

 

 

출처: http://arabiannight.tistory.com/124

 

안드로이드/Android 현재 시간 반환(밀리초)

 

 

안드로이드 프로그램을 개발 하다 보면, 현재 시간을 사용해야 하는 경우가 많이 발생 하게 되는데요.! 예를 들자면, 현재 파일이름을 만든다거나, 폴더를 생성한다거나, 영상 녹화 및 녹음 파일을 만드는 경우등을 생각 하시면 됩니다. 이럴 경우에는 일일이 현재 시간을 넣어 주는일을 하게 된다면, 파일명이 중복 되기 쉽고, 비효율적인 작업이 됩니다.

 

그래서, 현재 시간을 밀리초 단위로 system.currentTimeMillis() 반환해주는 메서드를 사용 하게 되면, 현재 시간을 가지고 할 수 있는 작업들을 쉽게 진행 할 수 있습니다. ㅎㅎ 

 


 long t = System.currentTimeMillis();
 

 

아래는 System.currentTimeMillis() 를 적용한 스크린샷 입니다. 현재 시간을 밀리초 단위로 반환해 줍니다.

 

 

=================================

=================================

=================================

 

 

 

출처: http://blog.naver.com/ohijoung?Redirect=Log&logNo=60189579151

안드로이드 dateadd 날짜/시분초 더하기 빼기

 

ex)

//시간30분 제한 체크하여 공개여부를 결정한다.
Calendar currentCal = Calendar.getInstance();

//DateFormat dateFormat = new SimpleDateFormat("hh:mm:ss a"); //00:00:00 오전/오후

DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); //00:00:00 (0~23시)

Log.i(TAG, ">rtUIWorkProc : 현재시간 : " + dateFormat.format(currentCal.getTime()));

currentCal.add(Calendar.HOUR, 12);

Log.i(TAG, ">rtUIWorkProc : 12시간 증가 : " + dateFormat.format(currentCal.getTime()));a

 

 

 

=================================

=================================

=================================

 

 

 

출처: http://blog.naver.com/ohijoung?Redirect=Log&logNo=60189579151

안드로이드 현재시간 Calendar

 

소스)

 

final Calendar c = Calendar.getInstance();

int iUnitHour = c.get(Calendar.HOUR_OF_DAY);

int iUnitMinute = c.get(Calendar.MINUTE);

 

iUnitHour  : 현재의 시간

iUnitMinute : 현재시간의 분

 

 

=================================

=================================

=================================

 

 

 

출처: http://blog.naver.com/ohijoung?Redirect=Log&logNo=60189579151

안드로이드 시간선택 다이알로그 TimePickerDialog

 

소스)

    //시간선택 다이알로그

 

    TimePickerDialog.OnTimeSetListener timeSetListener = 

            new TimePickerDialog.OnTimeSetListener() {

@Override

public void onTimeSet(TimePicker view, int hourOfDay, int minute) {

/*mHour = hourOfDay;

                    mMinute = minute;

                    updateDisplay();*/

}

};

 

//호출소스

 

new TimePickerDialog(actMain,

                        timeSetListener,

                        0,

                        0, false).show();

 

 

=================================

=================================

=================================

 

 

 

반응형