>  기사  >  Java  >  Java의 일반적인 날짜 연산(값 획득, 변환, 더하기, 빼기, 비교)

Java의 일반적인 날짜 연산(값 획득, 변환, 더하기, 빼기, 비교)

高洛峰
高洛峰원래의
2017-01-20 16:33:191425검색

Java 개발 과정에서 Date 유형과 얽히는 것은 불가피합니다. JDK 버전 1.7에서 자주 사용되는 날짜 관련 작업을 요약해 보겠습니다. 일어나서 돌아다니면서 커피 한잔 마시면 정말 좋을 것 같아요. 물론, 저는 실현 가능한 솔루션만을 제공할 뿐 모범 사례를 보장하지는 않습니다.

1. 날짜 값

JDK 이전 버전에서는 날짜 값을 얻기 위해 java.util.Date 클래스를 사용하는 코드가 많았는데, 그러나 Date 클래스는 국제화에 편리하지 않기 때문에 실제로 JDK1.1부터는 시간 및 날짜 처리를 위해 java.util.Calendar 클래스를 사용하는 것이 더 좋습니다. 여기서는 Date 클래스의 작업을 소개하지 않습니다. Calendar 클래스를 사용하여 현재 날짜와 시간을 얻는 방법에 대한 주제로 바로 넘어가겠습니다.

Calendar의 생성자 메소드는 보호되어 있으므로 API에서 제공하는 getInstance 메소드를 통해 Calendar 객체를 생성하겠습니다.

//有多个重载方法创建 Calendar 对象
Calendar now = Calendar.getInstance(); //默认
//指定时区和地区,也可以只输入其中一个参数
Calendar now = Calendar.getInstance(timeZone, locale);

그러면 이 객체를 통해 현재의 다양한 시간 매개변수를 얻을 수 있습니다.

int year = now.get(Calendar.YEAR); //,当前年份
int month = now.get(Calendar.MONTH) + ; //,当前月,注意加
int day = now.get(Calendar.DATE); //,当前日Date date = now.getTime(); //直接取得一个 Date 类型的日期

다른 유형의 시간 데이터를 얻으려면 now.get()의 매개변수만 수정하면 됩니다. 위의 세 가지 매개변수 외에 일반적으로 사용되는 다른 매개변수는 다음과 같습니다. :

• Calendar.DAY_OF_MONTH: 날짜, Calendar.DATE와 동일
•Calendar.HOUR: 12시간 형식의 시간
•Calendar.HOUR_OF_DAY: 24시간 형식의 시간
•Calendar.MINUTE: 분
•Calendar.SECOND: 초
•Calendar.DAY_OF_WEEK: 요일

시간 데이터를 얻는 것 외에도 다양한 시간을 설정할 수도 있습니다. Calendar 객체를 통한 매개변수.

//只设定某个字段的值
 // public final void set(int field, int value)
 now.set(Calendar.YEAR, );
 //设定年月日或者年月日时分或年月日时分秒
 // public final void set(int year, int month, int date[, int hourOfDay, int minute, int second])
 now.set(, , [, , , ]);
 //直接传入一个 Date 类型的日期
 // public final void setTime(Date date)
 now.set(date);

참고:

•시간 매개변수가 설정되면 날짜를 11일로 설정하는 경우와 같이 다른 관련 값이 다시 계산됩니다. , 요일에 해당하는 변경이 이루어집니다.
•구입된 월에 1을 더해 실제 월을 구합니다.
•Calendar 수업에서는 일요일이 1, 월요일이 2 등입니다.

2. 날짜 변환

날짜 값에 대해 이야기한 후 날짜 변환에 대해 이야기해 보겠습니다. 변환은 일반적으로 Date 형식과 String 형식 간의 상호 작용입니다. 변환 작업에서는 주로 java.text.SimpleDateFormat을 사용합니다.

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 try {
   //日期转字符串
   Calendar calendar = Calendar.getInstance();
   Date date = calendar.getTime();
   String dateStringParse = sdf.format(date);
   //字符串转日期
   String dateString = "-- ::";
   Date dateParse = sdf.parse(dateString);
 } catch (ParseException e) {
   e.printStackTrace();  
 }

참고:

• SimpleDateFormat 객체를 생성할 때 변환 형식을 지정해야 합니다.

•변환 형식은 대소문자를 구분하며, yyyy는 연도, MM은 월, dd는 날짜, HH는 24자리 16진수 시간, hh는 16진수 시간, mm은 시간을 나타냅니다. 분, ss는 초를 나타냅니다.

3. 날짜 더하기 및 빼기

일반적으로 날짜에 대해 두 가지 종류의 더하기 및 빼기 연산을 수행합니다.

• 특정 A 날짜를 기준으로 이전/이후 날짜, 이전/이후 연도 또는 다른 시간 단위 이전 및 이후 날짜를 계산하는 데 사용됩니다.

//根据现在时间计算
Calendar now = Calendar.getInstance();
now.add(Calendar.YEAR, ); //现在时间的年后
now.add(Calendar.YEAR, -); //现在时间的年前
//根据某个特定的时间 date (Date 型) 计算
Calendar specialDate = Calendar.getInstance();
specialDate.setTime(date); //注意在此处将 specialDate 的值改为特定日期
specialDate.add(Calendar.YEAR, ); //特定时间的年后
specialDate.add(Calendar.YEAR, -); //特定时间的年前

add 메소드에 유의하세요. Calendar 개체의 사용되며 변경할 수 있습니다. Calendar.YEAR는 임의의 시간 단위 필드로, 다양한 시간 단위로 날짜 계산을 완료합니다.

• 두 시간 사이의 간격을 계산합니다. 예를 들어 2016년 1월 1일부터 현재까지의 일수를 계산합니다.

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString = "-- ::";
Calendar calendar = Calendar.getInstance();
long nowDate = calendar.getTime().getTime(); //Date.getTime() 获得毫秒型日期
try {
    long specialDate = sdf.parse(dateString).getTime();
    long betweenDate = (specialDate - nowDate) / ( * * * ); //计算间隔多少天,则除以毫秒到天的转换公式
    System.out.print(betweenDate);
} catch (ParseException e) {
    e.printStackTrace();
}

 

4. 날짜 비교

이전 코드를 살펴보니 날짜 비교 연산이 이렇게 하면 날짜가 항상 "yyyyMMdd" 형식의 문자열로 변환된 후 문자열이 숫자 값으로 변환된 후 숫자 값이 비교됩니다. 하하, 간단한 비교 연산을 하려면 10줄 이상의 코드를 작성해야 하는데, 좀 부담스럽네요. 이제 날짜를 비교하는 올바른 방법에 대해 이야기하겠습니다.

날짜 비교에는 일반적으로 두 가지 방법이 있는데, 이는 java.util.Date 또는 java.util.Calendar에 공통됩니다. 하나는 after(), before() 메소드를 통해 비교하는 것이고, 다른 하나는 CompareTo() 메소드를 통해 비교하는 것입니다.

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString_01 = "2016-01-01 11:11:11";
String dateString_02 = "2016-01-02 11:11:11";
try {
    Date date_01 = sdf.parse(dateString_01);
    Date date_02 = sdf.parse(dateString_02);
    System.out.println(date_01.before(date_02)); //true,当 date_01 小于 date_02 时,为 true,否则为 false
    System.out.println(date_02.after(date_01)); //true,当 date_02 大于 date_01 时,为 true,否则为 false
    System.out.println(date_01.compareTo(date_02)); //-1,当 date_01 小于 date_02 时,为 -1
    System.out.println(date_02.compareTo(date_01)); //1,当 date_02 大于 date_01 时,为 1
    System.out.println(date_02.compareTo(date_02)); //0,当两个日期相等时,为 0
} catch (ParseException e) {
    e.printStackTrace();
}

위는 이 글에서 소개한 Java의 일반적인 날짜 연산(값 획득, 변환, 덧셈, 뺄셈, 비교)에 대한 전체 설명입니다.

Java의 일반적인 날짜 연산(값 획득, 변환, 덧셈, 뺄셈, 비교)과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.