如何在android中获得当前年份?
我试过了
int year = Calendar.get(Calendar.YEAR);
但它给我编译时的错误,
非静态方法“get(int)”不能从静态上下文中引用。
我从可观察的调用方法调用这个方法。
Observable.combineLatest(ob1 ob2, ob3, new Func3<String, String, String, Boolean>() { @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);
在这里你得到今年,今年!
// 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);
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.Date
, Calendar
和SimpleDateFormat
。
Joda-Time项目现在处于维护模式 ,建议迁移到java.time类。
要了解更多信息,请参阅Oracle教程 。 并搜索堆栈溢出了很多例子和解释。 规范是JSR 310 。
从何处获取java.time类?
- Java SE 8 , Java SE 9和更高版本
- 内置。
- 带有捆绑实现的标准Java API的一部分。
- Java 9增加了一些小功能和修复。
- Java SE 6和Java SE 7
- 大部分的java.time功能都被移植到了ThreeTen-Backport中的 Java 6&7中。
- Android的
- ThreeTenABP项目专门针对Android,采用了ThreeTen-Backport (上文提到)。
- 请参阅如何使用ThreeTenABP …。
您也可以将Calendar.getInstance() .get(Calendar.YEAR )
用于Kotlin语言目的
- 开发者控制台缺少崩溃原因
- Android Kotlin – 无法调用onNavigationItemSelected方法
- 应用程序在构建回栈时崩溃
- 匕首2不识别Kotlin的提供方法。 Java工作正常
- 在Kotlin中覆盖复杂类型的Java方法
- Kotlin Android扩展缓存合成属性还是每次调用findViewById()?
- Android Kotlin:错误未解决的参考:DaggerAppComponent
- 错误:将字节码转换为dex时出错:原因:com.android.dex.DexException:多个dex文件定义了Lorg / jetbrains / anko / collections / CollectionsKt;
- 无法将Kotlin Android扩展程序添加到我的项目中