Java 如何在安卓系统中获得本年度?

Java 如何在安卓系统中获得本年度?,java,android,Java,Android,我试过了 但它给了我编译时错误 无法从静态上下文引用非静态方法“get(int)” 我从observable的调用方法调用这个方法 int year = Calendar.get(Calendar.YEAR); 可观测的组合测试(ob1 ob2, ob3,新功能3(){ @凌驾 公共布尔调用(字符串a、字符串b、字符串c){。。。 我还看到了(new Date()).getYear();,但它已被弃用。因为您需要先创建一个实例 试试这个 Observable.combineLatest(ob

我试过了

但它给了我编译时错误

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

我从observable的调用方法调用这个方法

int year = Calendar.get(Calendar.YEAR);
可观测的组合测试(ob1 ob2,
ob3,新功能3(){
@凌驾
公共布尔调用(字符串a、字符串b、字符串c){。。。

我还看到了
(new Date()).getYear();
,但它已被弃用。

因为您需要先创建一个实例

试试这个

Observable.combineLatest(ob1 ob2,
                ob3, new Func3<String, String, String, Boolean>() {
                    @Override
                    public Boolean call(String a, String b, String c) {...
而且你可以走了。

你应该使用


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

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


在这里您可以得到年份,当前年份!

您可以使用
Calendar.getInstance().get(Calendar.year)
也可以用于Kotlin

语言目的

您尝试过下面的代码吗

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

#博士

java.time 其他答案使用了麻烦的旧日期时间类,如Calendar。这些类被java.time类取代。有关旧版本的Android,请参阅Three Ten Backport和Three TenABP项目

年份
类别 与其只传递整数来表示一年,不如传递对象,即类

获取当前年份需要一个时区。对于任何给定的时刻,全球各地的日期因地区而异。因此,
太平洋/奥克兰
可能在2018年,而
美国/蒙特利尔
可能同时在2017年

最好显式传递所需/预期的时区。如果省略,则隐式获取JVM的当前默认时区。该默认时区可以在运行时随时更改,因此不可靠

Year.now()
    .getValue()
如果确实需要整数,请提取该值

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

关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,如,&

要了解更多信息,请参阅.和搜索堆栈溢出以获取许多示例和解释。规范为

该项目现已启动,建议迁移到类

您可以直接与数据库交换java.time对象。使用兼容的或更高版本。不需要字符串,也不需要
java.sql.*
classes。Hibernate 5和JPA 2.2支持java.time

从哪里获得java.time类

  • 、和更高版本-标准Java API的一部分,带有捆绑实现。
    • 带来了一些小功能和修复
    • 大多数java.time功能都在中向后移植到Java6和Java7
    • Android(26+)的更高版本捆绑了java.time类的实现

    • 对于早期的Android(
      Year
      需要Android API 26或Java 1.8。@CoolMind请更仔细地阅读我的答案以寻求解决方案。请查找“Android”一词在底部附近提到了两次。这个问题包含一个标签
      android
      。因此我决定为android程序员添加该注释。这将在26以下的android版本上引发运行时异常。@DavidKennedy重新阅读注释、我答案的第一段以及在我答案末尾找到的项目符号。查找单词“Android”和“back port”。仅供参考,
      Date
      Calendar
      都是310年前采用JSR时遗留下来的。被现代的java.time类取代。对于早期的Android,请参阅ThreeTen Backport库和ThreeTenABP包装器。正确的时间应该是java.time now。请参见下文。
      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);
      
      Year.now()
          .getValue()
      
      ZoneId z = ZoneId.now( "Asia/Kolkata" ) ;
      Year y = Year.now( z ) ;
      
      int yearNumber = y.getValue() ;