Android 레코드 19 - 모멘트 동적 발표 시간 계산
5790 단어 안 드 로 이 드 개발IT_작은 무당
전재: ITxiao 소 무,http://blog.csdn.net/wwj_748
앞의 글 은 여러분 에 게 시간 지식 에 대한 공 유 를 드 립 니 다.http://blog.csdn.net/wwj_748 / article / details / 11536421. 본 블 로그 에서 필자 가 공유 하고 자 하 는 일 은 Calendar 를 통 해 우리 가 평소에 필요 로 하 는 년, 월, 일, 시, 분, 초 등 을 계산 하고 친구 권 의 동태 적 인 발표 시간 을 어떻게 계산 하 는 지 계산 하고 자 합 니 다.
여기 서 여러분 이 알 아야 할 몇 가지 중요 한 유형:
달력 종류: 달력
날짜 클래스: Date
날짜 형식 클래스: SimpleDateFormat
기본적으로 우리 가 날짜 에 대한 일부 전환 은 모두 이 몇 가지 유형 에서 이 루어 진 것 으로 다음 과 같은 몇 가지 자주 사용 하 는 전환 이 있다.
Calendar 를 통 해 관련 날짜 정 보 를 얻 을 수 있 습 니 다. 예 를 들 어 현재 의 년 월 일, 작년 의 년 월 일, 다음 해 의 년 월 일 등 입 니 다. 여기 서 필자 가 사용자 정의 달력 에 관 한 박문 을 볼 수 있 고 관련 날짜 작업 유형 을 제공 합 니 다.http://blog.csdn.net/wwj_748/article/details/42244865
Date 와 Calendar 사이 의 전환
Date 와 날짜 문자열 의 상호 변환
우선 Calendar 를 사용 하여 원 하 는 날짜 정 보 를 얻 는 방법 을 알 아 보 겠 습 니 다.
현재 달력 가 져 오기:
Calendar calendar = Calendar.getInstance();
필드 에 따라 정 보 를 가 져 옵 니 다.
현재 년도 가 져 오기:
Calendar.getInstance().get(Calendar.YEAR)
현재 달 가 져 오기:
Calendar.getInstance().get(Calendar.MONTH) + 1
달 은 0 에서 시작 되 기 때문에 여기에 + 1 을 주의해 야 한다.
현재 달의 며칠 째 획득:
calendar.get(Calendar.DAY_OF_MONTH)
현재 시간 밀리초 표시 가 져 오기:
calendar.getTimeInMillis()
Calendar 는 연산 도 많이 할 수 있 습 니 다. 필 자 는 달력 컨트롤 을 개발 할 때 날짜 에 관 한 연산 을 많이 했 습 니 다.
Calendar 의 add 방법 을 통 해 지정 한 필드 를 연산 합 니 다. 예 를 들 어 다음 과 같 습 니 다.
//
public static int getLastYear() {
Calendar c = Calendar.getInstance();
c.add(Calendar.YEAR, -1);
return c.get(Calendar.YEAR);
}
//
public static int getNextYear() {
Calendar c = Calendar.getInstance();
c.add(Calendar.YEAR, 1);
return c.get(Calendar.YEAR);
}
//
public static int getLastMonth() {
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, -1);
return c.get(Calendar.MONTH) + 1;
}
//
public static int getNextMonth() {
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, 1);
return c.get(Calendar.MONTH) + 1;
}
Calendar 에 대해 서 는 아직 많은 필드 가 있 으 니 독자 들 이 API 를 보고 스스로 시도 하 기 를 바 랍 니 다.
Date 와 Calendar 사이 의 전환
저 희 는 Calendar 의 setTime 방법 을 호출 하여 시간 에 대응 하 는 달력 대상 을 설정 할 수 있 습 니 다.
calendar.setTime(new Date())
Date 와 날짜 문자열 의 상호 변환
실제 개발 에 서 는 서버 가 되 돌아 오 는 날짜 데 이 터 를 포맷 해 야 합 니 다. 여기 서 는 SimleDateFormat 을 사용 해 야 합 니 다. 날짜 형식 을 지정 할 수 있 습 니 다.
private static SimpleDateFormat DATE_FORMAT_TILL_SECOND = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
날짜 문자열 을 받 았 습 니 다. Date 대상 으로 변환 할 수 있 습 니 다.
/**
* Date
* @param dateStr
* @param format
* @return
*/
public static Date strToDate(String dateStr, String format) {
Date date = null;
if (!TextUtils.isEmpty(dateStr)) {
DateFormat df = new SimpleDateFormat(format);
try {
date = df.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
}
}
return date;
}
우리 가 가 져 온 Date 대상 을 지정 한 형식의 문자열 로 변환 할 수도 있 습 니 다.
/**
*
* @param timeStr
* @param format
* @return
*/
public static String dateToString(String timeStr, String format) {
//
Date date = DateHelper.strToDate(timeStr, format);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
// , “xx xx ”
if (calendar.get(Calendar.YEAR) == getYear()) {
return DATE_FORMAT_TILL_DAY_CURRENT_YEAR.format(date);
}
return DATE_FORMAT_TILL_DAY_CH.format(date);
}
마지막 으로 말 하고 자 하 는 것 은 개발 과정 에서 우 리 는 동태 적 인 발표 시간 을 계산 해 야 한 다 는 것 이다. 일반적으로 우 리 는 날짜 문자열 을 얻 었 다. 우 리 는 현재 시간 과 동태 적 인 발표 시간 을 계산 하고 그들의 차 이 를 계산 하여 발표 가 언제 인지, 코드 를 올 려 야 한다.
/**
*
* @param dateStr
* @return
*/
public static String timeLogic(String dateStr) {
Calendar calendar = Calendar.getInstance();
calendar.get(Calendar.DAY_OF_MONTH);
long now = calendar.getTimeInMillis();
Date date = strToDate(dateStr, DATE_FORMAT);
calendar.setTime(date);
long past = calendar.getTimeInMillis();
//
long time = (now - past) / 1000;
StringBuffer sb = new StringBuffer();
if (time > 0 && time < 60) { // 1
return sb.append(time + " ").toString();
} else if (time > 60 && time < 3600) {
return sb.append(time / 60+" ").toString();
} else if (time >= 3600 && time < 3600 * 24) {
return sb.append(time / 3600 +" ").toString();
}else if (time >= 3600 * 24 && time < 3600 * 48) {
return sb.append(" ").toString();
}else if (time >= 3600 * 48 && time < 3600 * 72) {
return sb.append(" ").toString();
}else if (time >= 3600 * 72) {
return dateToString(dateStr, DATE_FORMAT);
}
return dateToString(dateStr, DATE_FORMAT);
}
효과 유사:
본 논문 의 기록 은 여기까지 입 니 다. 여기 서 한 가지 말씀 드 리 겠 습 니 다. 개발 과정 에서 우리 가 자주 만 나 는 지식 포 인 트 는 정리 하고 정리 할 수 있 습 니 다. 이동 하 는 제품 개발 은 택배 로 교체 해 야 합 니 다. 이런 개발 지식 포 인 트 를 기록 하 는 것 은 자신 에 게 큰 도움 이 되 고 자신의 개발 효율 을 향상 시 키 며 대응 하 는 능력 이 향상 되 고 임금 도 따라 올 라 갑 니 다.소 서 러 개인의 한 가지 관점, 인내심 을 가지 고 읽 어 주 셔 서 감사합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Android 개발 에 사용 되 는 MT 난수 생 성기이전의 AS3 이식 판 을 약간 고 쳐 서 현재 jkanji 에 사용 하고 있 습 니 다.테스트 를 좀 해 봤 는데 버그 가 별로 없 는 것 같 아 요.가장 간단 한 동전 테스트 를 해 봤 는데 같은 씨앗 의 경우 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.