我试过了
int year = Calendar.get(Calendar.YEAR);
Run Code Online (Sandbox Code Playgroud)
但它给了我编译时错误
无法从静态上下文引用非静态方法'get(int)'.
我从observable的调用方法调用此方法.
Observable.combineLatest(ob1 ob2,
ob3, new Func3<String, String, String, Boolean>() {
@Override
public Boolean call(String a, String b, String c) {...
Run Code Online (Sandbox Code Playgroud)
我也见过(new Date()).getYear();
但它被弃用了.
dsn*_*ode 102
因为您需要先创建实例.
试试这个
Calendar.getInstance().get(Calendar.YEAR);
Run Code Online (Sandbox Code Playgroud)
你很高兴.
是的,您得到一个错误,因为这不是静态方法。首先,您需要创建Calendar类的实例。
即
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
Run Code Online (Sandbox Code Playgroud)
在这里,您可以获得年份,当前年份!
Year.now()
.getValue()
Run Code Online (Sandbox Code Playgroud)
其他答案使用麻烦的旧日期时间类,例如日历。这些已被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 ) ;
Run Code Online (Sandbox Code Playgroud)
当您确实需要整数时,请提取值。
int yearNumber = y.getValue() ;
Run Code Online (Sandbox Code Playgroud)
该java.time框架是建立在Java 8和更高版本。这些类取代麻烦的老传统日期时间类,如java.util.Date
,Calendar
,和SimpleDateFormat
。
现在处于维护模式的Joda-Time项目建议迁移到java.time类。
要了解更多信息,请参见Oracle教程。并在Stack Overflow中搜索许多示例和说明。规格为JSR 310。
在哪里获取java.time类?