如何在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(); 但它已被弃用。

  • SparseArray与ArrayList之间的区别?
  • 如何在Android Studio中删除avd文件的图像系统?
  • “自上次项目同步以来,Gradle文件已更改。”消息始终显示
  • SwitchPreference onChecked / onClick Listener
  • 什么是Android项目最好的静态代码分析工具?
  • Android:如何将监听器添加到硬件菜单按钮?
  • 将我的apk推送到/ system / app
  • 如何将Gradle依赖项更新到其最新版本
  • 因为您需要先创建一个实例。

    尝试这个

     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语言