Ik heb het geprobeerd
int year = Calendar.get(Calendar.YEAR);
maar het geeft me een compileerfout die
Niet-statische methode ‘get(int)’ kan niet worden verwezen vanuit een statische context.
Ik roep deze methode aan vanaf de aanroepmethode van waarneembaar.
Observable.combineLatest(ob1 ob2,
ob3, new Func3<String, String, String, Boolean>() {
@Override
public Boolean call(String a, String b, String c) {...
Ik had ook (new Date()).getYear();
gezien, maar het is verouderd.
Antwoord 1, autoriteit 100%
Omdat u eerst een instantie moet maken.
probeer dit
Calendar.getInstance().get(Calendar.YEAR);
en je bent klaar om te gaan.
Antwoord 2, autoriteit 8%
#tl;dr
Year.now()
.getValue()
java.time
De andere antwoorden gebruiken de lastige oude datum-tijdklassen zoals Kalender. Deze worden verdrongen door de java.time-klassen. Zie voor oudere versies van Android de projecten ThreeTen-Backport en ThreeTenABP.
Year
klas
In plaats van alleen gehele getallen door te geven om een jaar weer te geven, geef je objecten door. Namelijk het Year
klasse.
Om het huidige jaar te krijgen, is een tijdzone vereist. Voor elk willekeurig moment varieert de datum over de hele wereld per zone. Het is dus mogelijk dat Pacific/Auckland
tegelijkertijd in 2018 is en America/Montreal
in 2017.
Het is beter om expliciet de gewenste/verwachte zone te passeren. Als u dit weglaat, krijgt u impliciet de huidige standaardtijdzone van de JVM. Die standaard kan op elk moment tijdens runtime veranderen, dus het is niet betrouwbaar.
ZoneId z = ZoneId.now( "Asia/Kolkata" ) ;
Year y = Year.now( z ) ;
Als je een geheel getal nodig hebt, extraheer je de waarde.
int yearNumber = y.getValue() ;
Over java.time
De java.timeframework is ingebouwd in Java 8 en hoger. Deze klassen vervangen de lastige oude legacydatum-tijdklassen zoals java.util.Date
, Calendar
, & SimpleDateFormat
.
Zie voor meer informatie de Oracle-zelfstudie. En zoek Stack Overflow voor veel voorbeelden en uitleg. Specificatie is JSR 310.
Het Joda-Time-project, nu in onderhoudsmodus, adviseert migratie naar de java.timeklassen.
U kunt java.timeobjecten rechtstreeks uitwisselen met uw database. Gebruik een JDBC-stuurprogrammadat voldoet aan JDBC 4.2of hoger. Geen strings nodig, geen java.sql.*
klassen. Slaapstand 5 & JPA 2.2 ondersteunt java.time.
Waar zijn de java.time-klassen te verkrijgen?
- Java SE 8, Java SE 9, Java SE 10, Java SE 11en later – Onderdeel van de standaard Java API met een gebundelde implementatie.
- Java 9bracht enkele kleine functies en oplossingen .
- Java SE 6en Java SE 7
- De meeste java.time-functionaliteit is teruggekoppeld naar Java 6 & 7 in ThreeTen-Backport.
- Android
- Latere versies van Android (26+) bundelen implementaties van de java.timeklassen.
- Voor eerdere Android (<26), het proces van API-ontsuikeringbrengt een subset van de java.time-functionaliteit die oorspronkelijk niet in Android was ingebouwd.
- Als het ontsuikeren niet biedt wat je nodig hebt, de ThreeTenABPproject past ThreeTen-Backport(hierboven vermeld) naar Android. Zie ThreeTenABP gebruiken….
Antwoord 3, autoriteit 8%
Ja, je krijgt een foutmelding omdat dit geen statische methode is. Eerst moet je een instantie van de klasse Calendar maken.
d.w.z.
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
Als uw min API-versie <26 is, kunt u ook een steno maken:
val yearInt = Year.now().value
Antwoord 4, autoriteit 2%
// 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);
Antwoord 5
je zou moeten gebruiken
Calendar.getInstance().get(Calendar.YEAR)
;
Antwoord 6
Heb je de onderstaande code geprobeerd
Agenda 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);
Antwoord 7
u kunt Calendar.getInstance() .get(Calendar.YEAR )
ook gebruiken voor Kotlintaaldoeleinden