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

我试过了

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

但它给了我编译时错误

无法从静态上下文引用非静态方法’get(int)’。

我从observable的调用方法调用此方法。

 Observable.combineLatest(ob1 ob2, ob3, new Func3() { @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); 

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

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教程 。 并搜索Stack Overflow以获取许多示例和解释。 规范是JSR 310 。

从哪里获取java.time类?

  • Java SE 8Java SE 9及更高版本
    • 内置。
    • 带有捆绑实现的标准Java API的一部分。
    • Java 9增加了一些小function和修复。
  • Java SE 6Java SE 7
    • 许多java.timefunction都被反向移植到ThreeTen-Backport中的 Java 6和7。
  • Android的
    • ThreeTenABP项目特别适用于Android的ThreeTen-Backport (如上所述)。
    • 请参见如何使用ThreeTenABP ….
 // 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); 

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