Home » Android » java – How to get current year in android?

java – How to get current year in android?

Posted by: admin April 23, 2020 Leave a comment

Questions:

I tried

int year = Calendar.get(Calendar.YEAR);

but it is giving me compile time error that

Non-static method ‘get(int)’ cannot be referenced from a static context.

I am calling this method from call method of observable.

Observable.combineLatest(ob1 ob2,
                ob3, new Func3<String, String, String, Boolean>() {
                    @Override
                    public Boolean call(String a, String b, String c) {...

I had also seen (new Date()).getYear(); but it is deprecated.

How to&Answers:

Because you need to create an instance first.

try this

Calendar.getInstance().get(Calendar.YEAR);

and you are good to go.

Answer:

tl;dr

Year.now()
    .getValue()

java.time

The other Answers use the troublesome old date-time classes such as Calendar. These are supplanted by the java.time classes. For older versions of Android, see the ThreeTen-Backport and ThreeTenABP projects.

Year class

Rather than pass around mere integers to represent a year, pass around objects. Namely, the Year class.

Getting the current year requires a time zone. For any given moment, the date varies around the globe by zone. So it is possible for Pacific/Auckland to be on 2018 while America/Montreal is in 2017 simultaneously.

Better to pass explicitly the desired/expected zone. If omitted, you implicitly get the JVM’s current default time zone. That default can change at any moment during runtime, so it is not reliable.

ZoneId z = ZoneId.now( "Asia/Kolkata" ) ;
Year y = Year.now( z ) ;

When you do need an integer, extract the value.

int yearNumber = y.getValue() ;

About java.time

The java.time framework is built into Java 8 and later. These classes supplant the troublesome old legacy date-time classes such as java.util.Date, Calendar, & SimpleDateFormat.

The Joda-Time project, now in maintenance mode, advises migration to the java.time classes.

To learn more, see the Oracle Tutorial. And search Stack Overflow for many examples and explanations. Specification is JSR 310.

Where to obtain the java.time classes?

Answer:

Yeah, you get an error because this is not a static method. First you need to create an instance of the Calendar class.
i.e.

Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);

and here you get year, current year!

Answer:

// get current year、month and day
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DATE);

// get current year millis
Time time = new Time(Time.TIMEZONE_UTC);
calendar.set(year, 0, 0, 0, 0, 0);
long year = calendar.getTimeInMillis();
time.set(year);
year = time.toMillis(true);

Answer:

you should use

Calendar.getInstance().get(Calendar.YEAR);

Answer:

Have you tried the code below

Calendar c = Calendar.getInstance();

int seconds = c.get(Calendar.SECOND);
int hour = c.get(Calendar.HOUR_OF_DAY); // IF YOU USE HOUR IT WILL GIVE 12 HOUR USE HOUR_OF_DAY TO GET 24 HOUR FORMAT
int minutes = c.get(Calendar.MINUTE);
int date = c.get(Calendar.DATE);
int month = c.get(Calendar.MONTH) + 1; // in java month starts from 0 not from 1 so for december 11+1 = 12
int year = c.get(Calendar.YEAR);

Answer:

you can use Calendar.getInstance() .get(Calendar.YEAR ) also for Kotlin language purposes