Java 如何在安卓系统中获得本年度?
我试过了 但它给了我编译时错误 无法从静态上下文引用非静态方法“get(int)” 我从observable的调用方法调用这个方法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
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(
需要Android API 26或Java 1.8。@CoolMind请更仔细地阅读我的答案以寻求解决方案。请查找“Android”一词在底部附近提到了两次。这个问题包含一个标签Year
。因此我决定为android程序员添加该注释。这将在26以下的android版本上引发运行时异常。@DavidKennedy重新阅读注释、我答案的第一段以及在我答案末尾找到的项目符号。查找单词“Android”和“back port”。仅供参考,android
和Date
都是310年前采用JSR时遗留下来的。被现代的java.time类取代。对于早期的Android,请参阅ThreeTen Backport库和ThreeTenABP包装器。正确的时间应该是java.time now。请参见下文。Calendar
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() ;