Java에서 현재 연도의 정수 값을 가져옵니다.
자바에서 올해를 정수로 정해야 합니다.난 그냥...java.util.Date()
단, 권장되지 않습니다.
int year = Calendar.getInstance().get(Calendar.YEAR);
이것이 새 달력을 설정하지 않는 기준에 부합하는지 확실하지 않습니까?(왜 반대합니까?)
Java 8의 시간 API를 사용하면(시스템 기본 시간대에서 연도를 얻는 것이 좋다고 가정하면) 다음 방법을 사용할 수 있습니다.
int year = Year.now().getValue();
가장 간단한 방법(Calendar 사용, 죄송합니다)은 다음과 같습니다.
int year = Calendar.getInstance().get(Calendar.YEAR);
Joda Time뿐만 아니라 새로운 Date and Time API JSR도 있습니다.
다음 두 가지 방법을 사용할 수도 있습니다.java.time.YearMonth
(Java 8 이후):
import java.time.YearMonth;
...
int year = YearMonth.now().getYear();
int month = YearMonth.now().getMonthValue();
dr;dr
ZonedDateTime.now( ZoneId.of( "Africa/Casablanca" ) )
.getYear()
시간대
Raffi Kachadourian의 답변은 Java 8에서 새로운 java.time 패키지를 사용하는 방법을 현명하게 보여준다.그러나 이 답변은 날짜를 결정할 때 시간대에 대한 중요한 문제를 다루지 못한다.
int year = LocalDate.now().getYear();
이 코드는 JVM의 현재 기본 시간대에 따라 달라집니다.기본 영역은 오늘 날짜를 결정하는 데 사용됩니다.예를 들어, 파리의 자정 이후에도 몽트렐의 날짜는 여전히 '어제'라는 것을 기억하라.
따라서 실행 중인 머신, 호스트 OS 시간대를 변경하는 사용자/관리자 또는 JVM의 현재 기본값을 변경하는 Java 코드에 따라 결과가 달라질 수 있습니다.시간대를 지정하는 것이 좋습니다.
참고로 항상 IANA에 의해 정의된 적절한 시간대 이름을 사용하십시오.표준적이지도 않고 고유하지도 않은 3~4개의 문자 코드를 사용하지 마십시오.
java.time
Java 8의 java.time의 예.
int year = ZonedDateTime.now( ZoneId.of( "Africa/Casablanca" ) ).getYear() ;
조다 타임
위와 같은 의견도 있지만 Joda-Time 2.7 라이브러리를 사용합니다.
int year = DateTime.now( DateTimeZone.forID( "Africa/Casablanca" ) ).getYear() ;
증감년
한 번에 1년씩 점프하는 것이 목표라면 연도 번호를 추출할 필요가 없습니다.Joda-Time과 java.time 모두 한 번에 1년을 추가/감산하는 메서드가 있습니다.그리고 이러한 방법은 일광 절약 시간제 및 기타 이상 현상을 처리하는 데 있어 현명합니다.
java.time의 예.
ZonedDateTime zdt =
ZonedDateTime
.now( ZoneId.of( "Africa/Casablanca" ) )
.minusYears( 1 )
;
Joda-Time 2.7의 예.
DateTime oneYearAgo = DateTime.now( DateTimeZone.forID( "Africa/Casablanca" ) ).minusYears( 1 ) ;
가장 쉬운 방법은 달력에서 연도를 얻는 것입니다.
// year is stored as a static member
int year = Calendar.getInstance().get(Calendar.YEAR);
날짜 객체의 년도를 원하는 경우 다음 방법을 사용했습니다.
public static int getYearFromDate(Date date) {
int result = -1;
if (date != null) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
result = cal.get(Calendar.YEAR);
}
return result;
}
Java 8에는 다음 코드를 사용합니다.
LocalDate localDate = LocalDate.now();
int year = localDate.getYear();
int month = localDate.getMonthValue();
int date = localDate.getDayOfMonth();
Java 8 을 사용할 수도 있습니다.
import java.time.LocalDate;
//...
int year = LocalDate.now().getYear();
응용 프로그램에서 날짜 및 달력 개체를 많이 사용하는 경우 Joda 시간을 사용해야 합니다.java.util.Date
가변성이 있습니다. java.util.Calendar
필드 갱신 시 퍼포먼스 문제가 발생하여 datetime 산술에 적합하지 않습니다.
위의 답변과 같이:
나중에 변수를 사용할 경우 다음을 사용하는 것이 좋습니다.
int year;
year = Calendar.getInstance().get(Calendar.YEAR);
조건만으로 연도가 필요한 경우 다음을 사용하는 것이 좋습니다.
Calendar.getInstance().get(Calendar.YEAR)
예를 들어, 도입된 체크가 현재 연도 200 이상 또는 현재 연도(생년월일 수 있음)보다 클 때 Do에 사용합니다.
import java.util.Calendar;
import java.util.Scanner;
public static void main (String[] args){
Scanner scannernumber = new Scanner(System.in);
int year;
/*Checks that the year is not higher than the current year, and not less than the current year - 200 years.*/
do{
System.out.print("Year (Between "+((Calendar.getInstance().get(Calendar.YEAR))-200)+" and "+Calendar.getInstance().get(Calendar.YEAR)+") : ");
year = scannernumber.nextInt();
}while(year < ((Calendar.getInstance().get(Calendar.YEAR))-200) || year > Calendar.getInstance().get(Calendar.YEAR));
}
제 경우 위의 어느 것도 작동하지 않습니다.그래서 여러 가지 방법을 시도해 본 결과, 아래의 방법을 찾았는데 효과가 있었습니다.
import java.util.Scanner;
import java.util.Date;
public class Practice
{
public static void main(String[] args)
{
Date d=new Date();
int year=d.getYear();
int currentYear=year+1900;
System.out.println(currentYear);
}
}
달력을 인스턴스화할 필요 없이 정수 연산을 사용하여 모든 작업을 수행할 수 있습니다.
return (System.currentTimeMillis()/1000/3600/24/365.25 +1970);
새해에 한두 시간 쉬어도 문제될 것 같은 느낌이 안 드나요?
Java 버전 8+에서는 java.time 라이브러리를 사용할 수 있습니다(권장).ISO 8601은 표준 날짜 작성 방법을 설정합니다.YYYY-MM-DD
★★★★★★★★★★★★★★★★★」java.time.Instant
(「」의 경우)UTC
import java.time.Instant;
int myYear = Integer.parseInt(Instant.now().toString().substring(0,4));
을 위해 (및 get의 : get의 줄임말)String
아니라, 이에요.int
를 사용합니다.Calendar
외관도 좋아지고 존 인식도 가능해집니다.
라이브러리의 특수 기능을 사용하여 일/월/년 단위로 작업합니다.
int[] int_dmy( long timestamp ) // remember month is [0..11] !!!
{
Calendar cal = new GregorianCalendar(); cal.setTimeInMillis( timestamp );
return new int[] {
cal.get( Calendar.DATE ), cal.get( Calendar.MONTH ), cal.get( Calendar.YEAR )
};
};
int[] int_dmy( Date d ) {
...
}
언급URL : https://stackoverflow.com/questions/136419/get-integer-value-of-the-current-year-in-java
'programing' 카테고리의 다른 글
데이터 로드 처리 - Vue (0) | 2022.08.17 |
---|---|
동일한 기호 중 일부를 사용하여 두 개의 공유 라이브러리 연결 (0) | 2022.08.17 |
MySQL 데이터베이스에 연결할 때 SSL 연결에 대한 경고 (0) | 2022.08.14 |
Vuex 스토어에서 상수 가져오기 (0) | 2022.08.14 |
Gradle - 툴체인을 사용한 플랫폼 'JDK 7 (1.7)'을 타깃으로 하지 못했습니다. (0) | 2022.08.14 |