목차
1데이트 수업
1.1 개요
java.util.Date
클래스는 밀리초 단위로 정확한 특정 순간을 나타냅니다. Date 클래스의 생성자는 밀리초 값을 날짜 객체로 변환할 수 있습니다 .
1.2 날짜 클래스 구성 방법
public Date()
: Date 객체를 할당하고 이 객체를 초기화하여 할당된 시간(밀리초 단위)을 나타냅니다.public Date(long date)
: 1970년 1월 1일 00:00:00 GMT인 "epoch"라는 표준 기본 시간 이후 지정된 밀리초 수를 나타내기 위해 Date 객체를 할당하고 초기화합니다.
팁: 우리는 East 8th District에 있으므로 기본 시간은 1970년 1월 1일 8:00:00입니다.
간단히 말하면, 매개변수 없는 구성을 사용하면 현재 시스템 시간의 밀리초 시간을 자동으로 설정할 수 있으며, 긴 유형 구성 매개변수를 지정하면 밀리초 시간을 사용자 정의할 수 있습니다. 예를 들어:
import java.util.Date;
public class DemoDate {
public static void main(String[] args) {
// 创建日期对象,把当前的时间转成日期对象
System.out.println(new Date()); // Sat Sep 19 23:11:21 CST 2020
// 创建日期对象,把当前的毫秒值转成日期对象
System.out.println(new Date(0L)); // Thu Jan 01 08:00:00 CST 1970
}
}
팁: println 메소드를 사용하면 Date 클래스의 toString 메소드가 자동으로 호출됩니다. Date 클래스는 Object 클래스의 toString 메소드를 재정의하고 다시 작성하므로 결과는 지정된 형식의 문자열입니다.
1.3 Date 클래스의 getTime 메소드: 밀리초 수를 반환합니다.
2 DateFormat 클래스
java.text.DateFormat
날짜/시간 형식 하위 클래스의 추상 클래스입니다. 이 클래스를 사용하여 날짜와 텍스트 간의 변환을 완료하는 데 도움을 줍니다. 즉, Date 객체와 String 객체 간에 앞뒤로 변환할 수 있습니다.
- Formatting : 지정된 형식에 따라 Date 객체를 String 객체로 변환합니다. (체재)
- Parsing : 지정된 형식에 따라 String 객체를 Date 객체로 변환합니다. (파싱)
2.1 SimpleDateFormat 하위 클래스의 생성 방법
DateFormat은 추상 클래스이므로 직접 사용할 수 없으므로 일반적으로 사용되는 하위 클래스가 필요합니다 java.text.SimpleDateFormat
. 이 클래스에는 형식 지정 또는 구문 분석 기준을 지정하는 스키마(형식)가 필요합니다. 시공방법은 다음과 같습니다.
public SimpleDateFormat(String pattern)
: 기본 로케일의 지정된 패턴 및 날짜 형식 기호를 사용하여 SimpleDateFormat을 구성합니다.
매개변수 패턴은 날짜 및 시간에 대한 사용자 정의 형식을 나타내는 문자열입니다.
형식 규칙
일반적으로 사용되는 형식 규칙은 다음과 같습니다.
식별자 문자(대소문자 구분) | 의미 |
---|---|
와이 | 년도 |
중 | 달 |
디 | 일 |
시간 | 시간 |
중 | 가리키다 |
에스 | 두번째 |
SimpleDateFormat 객체를 생성하는 코드는 다음과 같습니다.
import java.text.DateFormat;
import java.text.SimpleDateFormat;
public class Demo02SimpleDateFormat {
public static void main(String[] args) {
// 对应的日期格式如:2018-01-16 15:06:38
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
}
}
2.2 DateFormat 클래스의 공통 메소드
DateFormat 클래스의 일반적으로 사용되는 메서드는 다음과 같습니다.
public String format(Date date)
: Date 객체를 문자열로 형식화합니다.public Date parse(String source)
: 문자열을 Date 객체로 구문 분석합니다.
2.2.1 포맷 방법
format 메소드를 사용하는 코드는 다음과 같습니다.
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
/*
把Date对象转换成String
*/
public class Demo03DateFormatMethod {
public static void main(String[] args) {
Date date = new Date();
// 创建日期格式化对象,在获取格式化对象时可以指定风格
DateFormat df = new SimpleDateFormat("yyyy年MM月dd日");
String str = df.format(date);
System.out.println(str); // 2020年09月19日
}
}
2.2.2 구문 분석 방법
구문 분석 방법을 사용하는 코드는 다음과 같습니다.
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/*
把String转换成Date对象
*/
public class Demo04DateFormatMethod {
public static void main(String[] args) throws ParseException {
DateFormat df = new SimpleDateFormat("yyyy年MM月dd日");
String str = "2018年12月11日";
Date date = df.parse(str);
System.out.println(date); // Tue Dec 11 00:00:00 CST 2018
}
}
2.3 종합 연습
질문 : 사람이 태어난 일수를 계산하려면 날짜 및 시간 관련 API를 사용해 보세요.
아이디어:
1. 현재 시간에 해당하는 밀리초 값을 가져옵니다.
2. 생년월일에 해당하는 밀리초 값을 가져옵니다.
3. 두 번 빼기(현재 시간 – 생년월일)
암호:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
/*
把String转换成Date对象
*/
public class Demo {
public static void main(String[] args) throws ParseException {
System.out.println("请输入出生日期 格式 YYYY-MM-dd");
// 获取出生日期,键盘输入
String birthdayString = new Scanner(System.in).next();
// 将字符串日期,转成Date对象
// 创建SimpleDateFormat对象,写日期模式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 调用方法parse,字符串转成日期对象
Date birthdayDate = sdf.parse(birthdayString);
// 获取今天的日期对象
Date todayDate = new Date();
// 将两个日期转成毫秒值,Date类的方法getTime
long birthdaySecond = birthdayDate.getTime();
long todaySecond = todayDate.getTime();
long secone = todaySecond-birthdaySecond;
if (secone < 0){
System.out.println("还没出生呢");
} else {
System.out.println(secone/1000/60/60/24);
}
}
}
请输入出生日期 格式 YYYY-MM-dd
2019-09-12
373
3 달력 수업
3.1 개념
java.util.Calendar
Date 뒤에 나타나며 많은 Date 메서드를 대체하는 달력 클래스입니다. 이 클래스는 쉽게 액세스할 수 있도록 가능한 모든 시간 정보를 정적 멤버 변수로 캡슐화합니다. Calendar 클래스는 다양한 시간 속성을 얻는데 편리합니다.
3.2 획득 방법
Calendar는 추상 클래스인데, 언어 민감도 때문에 Calendar 클래스는 객체 생성 시 직접 생성되지 않고, 다음과 같이 static 메소드를 통해 생성되어 서브클래스 객체를 반환한다.
달력 정적 방법
public static Calendar getInstance()
: 기본 시간대 및 로케일을 사용하여 달력을 가져옵니다.
예를 들어:
import java.util.Calendar;
public class Demo06CalendarInit {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
}
}
3.3 일반적인 방법
Calendar 클래스의 API 문서에 따르면 일반적인 메서드는 다음과 같습니다.
public int get(int field)
: 주어진 달력 필드의 값을 반환합니다.public void set(int field, int value)
: 주어진 달력 필드를 주어진 값으로 설정합니다.public abstract void add(int field, int amount)
: 달력의 규칙에 따라 주어진 달력 필드에 지정된 시간을 더하거나 뺍니다.public Date getTime()
: 이 달력 시간 값(시대부터 현재까지의 밀리초 오프셋)을 나타내는 Date 객체를 반환합니다.
Calendar 클래스는 주어진 달력 필드를 나타내는 많은 멤버 상수를 제공합니다.
필드 값 | 의미 |
---|---|
년도 | 년도 |
월 | 월(0부터 시작, +1과 함께 사용 가능) |
DAY_OF_MONTH | 해당 월의 일(일) |
시간 | 시간(12시간 형식) |
HOUR_OF_DAY | 시간(24시간 형식) |
분 | 가리키다 |
두번째 | 두번째 |
DAY_OF_WEEK | 요일(요일, 일요일은 1, -1과 함께 사용 가능) |
3.3.1 get/set 메소드
get 메소드는 지정된 필드의 값을 얻는 데 사용되고 set 메소드는 지정된 필드의 값을 설정하는 데 사용됩니다.코드 사용법 데모:
import java.util.Calendar;
public class Demo {
public static void main(String[] args) {
// 创建Calendar对象
Calendar cal = Calendar.getInstance();
// 获取年
int year = cal.get(Calendar.YEAR);
// 获取月
int month = cal.get(Calendar.MONTH) + 1;
// 获取日
int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
System.out.print(year + "年" + month + "月" + dayOfMonth + "日");
}
}
2020年9月20日
import java.util.Calendar;
public class Demo07CalendarMethod {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
// 设置年
cal.set(Calendar.YEAR, 2018);
// 获取年
int year = cal.get(Calendar.YEAR);
// 获取月
int month = cal.get(Calendar.MONTH) + 1;
// 获取日
int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
System.out.print(year + "年" + month + "月" + dayOfMonth + "日");
}
}
2018年9月20日
3.3.2 추가 메소드
add 메소드는 지정된 달력 필드의 값을 더하거나 뺄 수 있으며, 두 번째 매개변수가 양수이면 오프셋을 더하고, 음수이면 오프셋을 뺍니다. 다음과 같은 코드:
import java.util.Calendar;
public class Demo08CalendarMethod {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
// 获取年
int year = cal.get(Calendar.YEAR);
// 获取月
int month = cal.get(Calendar.MONTH) + 1;
// 获取日
int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
System.out.println(year + "年" + month + "月" + dayOfMonth + "日");
// 使用add方法
cal.add(Calendar.DAY_OF_MONTH, 2); // 加2天
cal.add(Calendar.YEAR, -3); // 减3年
// 获取年
year = cal.get(Calendar.YEAR);
// 获取月
month = cal.get(Calendar.MONTH) + 1;
// 获取日
dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
System.out.println(year + "年" + month + "月" + dayOfMonth + "日");
}
}
2020年9月20日
2017年9月22日
3.3.3 getTime 메소드: 해당 Date 객체를 반환합니다.
Calendar의 getTime 메소드는 밀리초 시간을 가져오지 않고 해당 Date 객체를 가져옵니다.
import java.util.Calendar;
import java.util.Date;
public class Demo {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
Date date = cal.getTime();
System.out.println(date);
}
}
Sun Sep 20 08:44:18 CST 2020
팁:
서부 주는 일요일(1)과 월요일(2)에 시작하고, 중국 주는 월요일에 시작하므로 -1을 사용할 수 있습니다.
Calendar 클래스에서 월은 1월~12월을 나타내는 0~11로 표시됩니다(+1 사용 가능).
날짜는 크기와 관련이 있으며, 시간이 늦을수록 시간이 커집니다.