자바 에서 시간 과 날짜 처리 에 대한 작은 기록
시간 과 날 짜 를 처리 하 는 경우 가 많 습 니 다. 적 어 보 세 요. 하하.
시간 과 날짜 에 자주 사용 되 는 몇 가지 종류: java. util. Date,
java.util.Calendar,
java.util.GregorainCalendar,
java.text.DateFormat,
java.text.SimpleDateFormat
java.util.Date :
밀리초
하루 24 * 60 * 60 = 86400 초
세계 시 (UT 또는 UTC), 그리니치 시 (GMT), 그리니치 시 (GMT) 와 세계 시 (UT)
그리니치 시 (GMT) 는 표준 적 인 '민간' 호칭 이 고, 세계 시 (UT) 는 같은 표준 이다.
과학적 호칭.UTC 와 UT 의 차 이 는 UTC 는 원자 시 계 를 바탕 으로 하고 UT 는 천체 관찰 을 바탕 으로 한다.
(중국어 판 jdk 정말 좋 네요. 과학 보급 교재 와 네, 하하)
자주 사용 하 는 구조 방법:
Date();
Date(long date)
(long date) 표준 기준 시간
00: 00: 00 GMT) 겪 은 밀리초 수.
또 일부 구조 방법 은 이미 deprecated 되 었 다.
주요 방법: (자주 사용 되 는 jdk 문서 몇 개 를 소개 합 니 다)
boolean after(Date when) 테스트 날 짜 는 이 날짜 이후 입 니 다.
boolean before(Date when) 테스트 날 짜 는 이 날짜 전에
Object clone() 이 대상 의 던 전 으로 돌아 가기
long getTime() 1970.1.1 00: 00: 00 GMT 이후 이 대상 이 표시 한 밀리초 수 를 되 돌려 줍 니 다.
void setTime (long time) 이 날짜 대상 을 설정 하여 1970 년 1 월 1 일 을 표시 합 니 다.
00: 00: 00 GMT 이후 time 밀리초 의 시간.
String toString () Date 대상 을 다음 과 같은 형식 으로 변환 합 니 다.
String:dow mon dd hh:mm:ss zzz yyyy
그 중 dow 는 일주일 중 어느 날 (Sun, Mon, Tue, Wed, Thu, Fri, Sat) 이다.
dow 는 일주일 중 어느 날 (Sun, Mon, Tue, Wed, Thu, Fri, Sat) 이다.
몬 은 월 (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep,
Oct, Nov, Dec)。
dd 는 1 월 의 어느 날 (01 에서 31) 로 두 개의 10 진수 로 표 시 됩 니 다.
hh 는 하루 의 시간 (00 에서 23) 으로 두 개의 10 진수 로 표 시 됩 니 다.
mm 는 시간 중의 분 (00 에서 59) 으로 두 개의 10 진수 로 표 시 됩 니 다.
ss 는 분 의 초 (00 에서 61) 로 두 개의 10 진수 로 표 시 됩 니 다.60, 61 은 '윤 초' 가 있어 서 그래 요.
zzz 는 시간 대 입 니 다.표준 시간 대 줄 임 말 은 parse 인식 방법 을 포함 한 시간 대 줄 임 말 입 니 다.
시간 대 정 보 를 제공 하지 않 으 면 zzz 가 비어 있 습 니 다. 즉, 문자 가 전혀 포함 되 지 않 습 니 다.
yyy 는 연도 로 4 비트 10 진수 로 표 시 됩 니 다.
System. currentTimeMillis () 를 사용 하여 현재 시스템 시간의 밀리초 수 를 얻 습 니 다.
java.util.Calendar :
Calendar 클래스 는 추상 적 인 클래스 입 니 다.
Calendar rightNow = Calendar.getInstance();
세 가지 방법 으로 달력 필드 를 변경 할 수 있 습 니 다: set (), add (), roll ().
set (f, value) 달력 필드 f 를 value 로 변경 합 니 다.
달력 필드 f 가 변경 되 었 음 을 표시 하기 위해 내부 구성원 변 수 를 설정 합 니 다.달력 필드 에 도 불구 하고
f 는 즉시 변경 되 었 으 나 다음 에 get (), getTime (), getTimeInMillis () 를 호출 할 때 까지
add () 또는 roll () 시 달력 의 시간 값 을 다시 계산 합 니 다 (밀리초 단위).그래서
set () 로 여러 번 불필요 한 계산 을 촉발 하지 않 습 니 다.
dd (f, delta) 는 델 타 를 f 필드 에 추가 합 니 다.이것 은 호출 과 같다.
set(f, get(f) + delta)
roll (f, delta) 은 delta 를 f 필드 에 추가 하지만 더 큰 필드 는 변경 하지 않 습 니 다.
java.util.GregorianCalendar:
Gregorian Calendar 는 Calendar 의 구체 적 인 하위 클래스 로 세계 대부분 국 가 를 제공 합 니 다.
사용 하 는 표준 달력 시스템 입 니 다.
java.text.DateFormat:
Dateformat 는 날짜 / 시간 형식 화 된 하위 클래스 의 추상 적 인 클래스 로 언어 와 무관 한 방식 으로 포맷 되 어 있 습 니 다.
날짜 나 시간 을 분석 하 다.
java.text.SimpleDateFormat:
Simple DateFormat 은 언어 환경 과 관련 된 방식 으로 날 짜 를 포맷 하고 분석 하 는 구체 적 인 클래스 입 니 다.
포맷 (날짜 - > 텍스트), 분석 (텍스트 - > 날짜), 규범 화 를 허용 합 니 다.
Simple DateFormat 은 사용자 가 정의 하 는 날짜 - 시간 형식의 모드 를 선택 할 수 있 습 니 다.하지만
DateFormat 의 getTimeInstance, getDateInstance 또는
getDateTimeInstance 에서 새로운 생 성 날짜 - 시간 포맷 프로그램 을 만 듭 니 다.모든 이런 종류의 방법
기본 형식 으로 초기 화 된 날짜 / 시간 포맷 프로그램 을 되 돌려 줍 니 다.필요 에 따라 사용 할 수 있다
apply Pattern 방법 으로 형식 모드 를 수정 합 니 다.
날짜 와 시간 형식 은 날짜 와 시간 모드 문자열 로 지 정 됩 니 다.
날짜 와 시간 모드 문자열 에서 따옴표 가 붙 지 않 은 알파벳 'A' 부터 'Z', 'a' 부터 'z' 까지
날짜 나 시간 문자열 요 소 를 나타 내 는 패턴 알파벳 으로 해 석 됩 니 다.
인용 하 다.
자모 날짜 또는 시간 요소 나타내다 예시
G Era 표식 부호 Text AD
y 년. Year 1996; 96
M 년 중 월 Month July; Jul; 07
w 연중 주 수 Number 27
W 월 중 주 수 Number 2
D 연중 일수 Number 189
d 월중 일수 Number 10
F 월 중 주 Number 2
E 요일 Text Tuesday; Tue
a Am / pm 태그 Text PM
H 하루 중 시간 수 (0 - 23) Number 0
k 하루 중 시간 수 (1 - 24) Number 24
K am / pm 의 시간 수 (0 - 11) Number 0
h am / pm 의 시간 수 (1 - 12) Number 12
m 시간 중의 분 수 Number 30
s 분 초 Number 55
S 밀리초 수 Number 978
z 시간 대 General time zone Pacific Standard Time; PST; GMT-08:00
Z 시간 대 RFC 822 time zone -0800
인용 하 다.
날짜 와 시간 모드 결실
"yyyy.MM.dd G 'at' HH:mm:ss z" 2001.07.04 AD at 12:08:56 PDT
"EEE, MMM d, ''yy" Wed, Jul 4, '01
"h:mm a" 12:08 PM
"hh 'o''clock' a, zzzz" 12 o'clock PM, Pacific Daylight Time
"K:mm a, z" 0:08 PM, PDT
"yyyyy.MMMMM.dd GGG hh:mm aaa" 02001.July.04 AD 12:08 PM
"EEE, d MMM yyyy HH:mm:ss Z" Wed, 4 Jul 2001 12:08:56 -0700
"yyMMddHHmmssZ" 010704120856-0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ" 2001-07-04T12:08:56.235-0700
현재 시스템 의 밀리초 획득:
package org.lokvin.example.calendar;
public class CalendarExample1 {
public static void main(String[] args) {
java.util.Date date = new java.util.Date();
// , 1970.1.1 00:00:00 GMT
long time = System.currentTimeMillis();
java.util.Date date1 = new java.util.Date(time);
System.out.println("date = " + date.toString());
System.out.println("millisecond = " + time);
System.out.println("date1 = " + date1.toString());
}
}
실행 결과:
인용 하 다.
date = Mon Dec 04 16:01:16 CST 2006
millisecond = 1165219276771
date1 = Mon Dec 04 16:01:16 CST 2006
package org.lokvin.example.calendar;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class CalendarExample2 {
public static void main(String[] args) {
//
Calendar calendar = Calendar.getInstance();
int era = calendar.get(Calendar.ERA);// 0 = BC, 1 = AD
System.out.println("ERA = " + era);
int year = calendar.get(Calendar.YEAR); //2006
System.out.println("YEAR = " + year);
int month = calendar.get(Calendar.MONTH);
// , 0..11 JAN..DEC
System.out.println("Month = " + month);//0 = JAN ... 11 = DEC
int day = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println("Day of Month = " + day); // 1
// , Sun=1, Mon=2 ... Sta=7
int day_of_week = calendar.get(Calendar.DAY_OF_WEEK);
System.out.println("Day of Week = " + day_of_week);
// 12 Calendar.HOUR
int hour12 = calendar.get(Calendar.HOUR);
// AM ,PM , 0 = AM, 1 = PM
int ampm = calendar.get(Calendar.AM_PM);
System.out.println("hour 12 = " + hour12);
System.out.println("am pm = " + ampm); //0 = am , 1 = pm
// 24 Calendar.HOUR_OF_DAY
int hour24 = calendar.get(Calendar.HOUR_OF_DAY);
System.out.println("hour 24 = " + hour24);
Calendar today = new GregorianCalendar(2006, Calendar.DECEMBER, 4);
//Calendar.getInstance()
System.out.println("calendar = " + calendar.getTime().toString());
// new GregorianCalendar(2006, Calendar.DECEMBER, 4)
// calendar , , 0( =0)
System.out.println("today = " + today.getTime().toString());
}
}
실행 결과:
인용 하 다.
ERA = 1
YEAR = 2006
Month = 11
Day of Month = 4
Day of Week = 2
hour 12 = 4
am pm = 1
hour 24 = 16
calendar = Mon Dec 04 16:22:42 CST 2006
today = Mon Dec 04 00:00:00 CST 2006
두 날짜 사이 의 비교:
package org.lokvin.example.calendar;
import java.util.Calendar;
import java.util.GregorianCalendar;
/*
* calendar
*/
public class CalendarExample3 {
public static void main(String[] args) {
//
Calendar xmas = new GregorianCalendar(2006, Calendar.DECEMBER, 25);
Calendar newYear = new GregorianCalendar(2007, Calendar.JANUARY, 1);
//
boolean flag = xmas.before(newYear);
System.out.println("flag = " + flag);
flag = xmas.after(newYear);
System.out.println("flag = " + flag);
//
long timeDiffMillis = newYear.getTimeInMillis() - xmas.getTimeInMillis();
System.out.println("time diff millis = " + timeDiffMillis);
//
long diffSecs = timeDiffMillis / 1000;
System.out.println("time diff secs = " + diffSecs);
//
long diffMins = timeDiffMillis / (1000 * 60);
System.out.println("time diff mins = " + diffMins);
//
long diffHours = timeDiffMillis / (1000 * 60 * 60);
System.out.println("time diff hours = " + diffHours);
//
long diffDays = timeDiffMillis / (1000 * 60 * 60 * 24);
System.out.println("time diff days = " + diffDays);
}
}
실행 결과:
인용 하 다.
flag = true
flag = false
time diff millis = 604800000
time diff secs = 604800
time diff mins = 10080
time diff hours = 168
time diff days = 7
Calendar 로 나이 계산 하기:
package org.lokvin.example.calendar;
import java.util.Calendar;
import java.util.GregorianCalendar;
/*
*
*/
public class CalendarExample4 {
public static void main(String[] args) {
// Calendar
Calendar birthDate = new GregorianCalendar(1979, Calendar.JULY, 7);
Calendar today = Calendar.getInstance();
int age = today.get(Calendar.YEAR) - birthDate.get(Calendar.YEAR);
// , age - 1
birthDate.add(Calendar.YEAR, age);
if(today.before(birthDate)){
age--;
}
System.out.println("age = " + age);
}
}
윤년 여 부 를 판단 하 다.
package org.lokvin.example.calendar;
import java.util.GregorianCalendar;
/*
* leap year
*/
public class CalendarExample5 {
public static void main(String[] args) {
// " " leap year
GregorianCalendar cal = new GregorianCalendar();
boolean isLeapYear = cal.isLeapYear(1998);
System.out.println("is leap year 1998 = " + isLeapYear);
isLeapYear = cal.isLeapYear(2000);
System.out.println("is leap year 2000 = " + isLeapYear);
}
}
실행 결과:
인용 하 다.
is leap year 1998 = false
is leap year 2000 = true
다른 시간 대 획득 시간:
package org.lokvin.example.calendar;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.TimeZone;
/*
*
*/
public class CalendarExample6 {
public static void main(String[] args) {
Calendar cal = new GregorianCalendar();
int hour12 = cal.get(Calendar.HOUR);
int hour24 = cal.get(Calendar.HOUR_OF_DAY);
System.out.println("hour12 in our timezone = " + hour12);
System.out.println("hour24 in our timezone = " + hour24);
// , zoneId
Calendar calJap = new GregorianCalendar(TimeZone.getTimeZone("Japan"));
hour12 = calJap.get(Calendar.HOUR);
System.out.println("hour12 in japs timezone = " + hour12);
hour24 = calJap.get(Calendar.HOUR_OF_DAY);
System.out.println("hour24 in japs timezone = " + hour24);
// zoneId
String[] zoneIds = TimeZone.getAvailableIDs();
for(int i=0; i
hour12 in our timezone = 5
hour24 in our timezone = 17
hour12 in japs timezone = 6
hour24 in japs timezone = 18
zone id = Etc/GMT+12
zone id = Etc/GMT+11
zone id = MIT
zone id = Pacific/Apia
zone id = Pacific/Midway
...
포맷 날짜:
package org.lokvin.example.calendar;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateForamExample {
public static void main(String[] args) {
Date rightNow = new Date();
DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
DateFormat format2 = new SimpleDateFormat("yyyy-MM-dd");
DateFormat format3 = new SimpleDateFormat("h:mm a");
DateFormat format4 = new SimpleDateFormat("yyyy.MM.dd G 'at' HH:mm:ss z");
DateFormat format5 = new SimpleDateFormat("EEE, MMM, dd, ''yyyy");
DateFormat format6 = new SimpleDateFormat("yyyy.MM.dd kk:mm 'o''clock' a, zzzz");
DateFormat format7 = new SimpleDateFormat("yyyyy.MMMMM.dd GGG hh:mm aaa");
System.out.println("format1 = " + format1.format(rightNow));
System.out.println("format2 = " + format2.format(rightNow));
System.out.println("format3 = " + format3.format(rightNow));
System.out.println("format4 = " + format4.format(rightNow));
System.out.println("format5 = " + format5.format(rightNow));
System.out.println("format6 = " + format6.format(rightNow));
System.out.println("format7 = " + format7.format(rightNow));
}
}
출력 결과:
인용 하 다.
format1 = 2006-12-05 06:12:02
format2 = 2006-12-05
오후 6: 12
format 4 = 2006.12.05 서기 at 18: 12: 02 CST
format 5 = 화요일, 12 월, 05, '2006
18: 12 o 'clock 오후, 중국 표준시 간
12 월. 05 서기 06: 12 오후
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.