如何在android中获得当前年份?

我试过了

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

但它给我编译时的错误,

非静态方法“get(int)”不能从静态上下文中引用。

我从可观察的调用方法调用这个方法。

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

我也看过(new Date()).getYear(); 但不推荐使用。

因为你需要先创建一个实例。

尝试这个

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

你很好走。

是的,你得到一个错误,因为这不是一个静态的方法。 首先,您需要创建一个Calendar类的实例。

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

在这里你得到今年,今年!

 // 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); 

你应该使用

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

你有没有尝试下面的代码

日历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); 

TL;博士

 Year.now() .getValue() 

java.time

其他答案使用日历等麻烦的旧日期时间类。 这些被java.time类取代。 对于较旧版本的Android,请参阅ThreeTen-Backport和ThreeTenABP项目。

Year

传递物体而不是仅仅用整数来代表一年。 即Year

获得当年需要一个时区。 对于任何特定的时刻,日期在全球各地按照地区而不同。 所以Pacific/Auckland可能在2018年,而America/Montreal在2017年可能同时出现。

最好明确地通过期望/预期的区域。 如果省略,则隐式获取JVM当前的默认时区。 该默认值可以在运行时随时更改,因此不可靠。

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

当你需要一个整数时,提取这个值。

 int yearNumber = y.getValue() ; 

关于java.time

java.time框架内置于Java 8及更高版本中。 这些类取代了麻烦的旧的遗留日期时间类,如java.util.DateCalendarSimpleDateFormat

Joda-Time项目现在处于维护模式 ,建议迁移到java.time类。

要了解更多信息,请参阅Oracle教程 。 并搜索堆栈溢出了很多例子和解释。 规范是JSR 310 。

从何处获取java.time类?

  • Java SE 8Java SE 9和更高版本
    • 内置。
    • 带有捆绑实现的标准Java API的一部分。
    • Java 9增加了一些小功能和修复。
  • Java SE 6Java SE 7
    • 大部分的java.time功能都被移植到了ThreeTen-Backport中的 Java 6&7中。
  • Android的
    • ThreeTenABP项目专门针对Android,采用了ThreeTen-Backport (上文提到)。
    • 请参阅如何使用ThreeTenABP …。

您也可以将Calendar.getInstance() .get(Calendar.YEAR )用于Kotlin语言目的