java 如何在android中获取当前年份?

kcwpcxri  于 2023-01-11  发布在  Java
关注(0)|答案(9)|浏览(180)

我试过了

int year = Calendar.get(Calendar.YEAR);

但它给了我编译时错误
无法从静态上下文引用非静态方法“get(int)”。
我从observable的call方法调用这个方法。

Observable.combineLatest(ob1 ob2,
                ob3, new Func3<String, String, String, Boolean>() {
                    @Override
                    public Boolean call(String a, String b, String c) {...

我也看过(new Date()).getYear();,但是它已经过时了。

jgovgodb

jgovgodb1#

因为您需要先创建一个示例。
试试这个

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

你就可以走了。

jecbmhm3

jecbmhm32#

是的,你会得到一个错误,因为这不是一个静态方法。首先你需要创建一个Calendar类的示例。

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

如果您的最小API版本〈26,您也可以进行简化:

val yearInt = Year.now().value
aij0ehis

aij0ehis3#

编号TL;DR

Year.now()
    .getValue()

java.时间

其他的Answers使用了旧的日期-时间类,比如Calendar,这些都被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.时间 *

java.time框架内置于Java 8及更高版本中,这些类取代了麻烦的旧legacy日期-时间类,如java.util.DateCalendarSimpleDateFormat
要了解更多信息,请参见Oracle Tutorial。并搜索Stack Overflow以获取许多示例和说明。规范是JSR 310
Joda-Time项目(现在在maintenance mode中)建议迁移到java.time类。
您可以直接与数据库交换 java.time 对象。使用与JDBC 4.2兼容的JDBC driver或更高版本。不需要字符串,也不需要java.sql.*类。Hibernate 5和JPA 2.2支持 java.time
从哪里获得java.time类?

*Java SE 8Java SE 9Java SE 10Java SE 11及更高版本-标准Java API的一部分,具有捆绑的实现。
*Java 9带来了一些次要特性和修复。
*Java SE 6Java SE 7

  • java.time 的大部分功能都在ThreeTen-Backport中向后移植到Java 6和7。
  • Android
  • 更高版本的Android(26+)捆绑了 java.time 类的实现。
  • 对于早期的Android(〈26),*API去糖化 * 过程带来了Android最初未内置的subset of the java.time功能。
  • 如果脱糖不能满足您的需求,ThreeTenABP项目会将ThreeTen-Backport(上面提到的)应用于Android。
wydwbb8l

wydwbb8l4#

// 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);
5n0oy7gb

5n0oy7gb5#

您应该使用
Calendar.getInstance().get(Calendar.YEAR) ;

ocebsuys

ocebsuys6#

Calendar.getInstance() .get(Calendar.YEAR )也可以用于Kotlin语言

jv2fixgn

jv2fixgn7#

你试过下面的代码吗
日历c =日历.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);
olqngx59

olqngx598#

与Kotlin

LocalDateTime.now().year
qyzbxkaa

qyzbxkaa9#

在Kotlin你可以得到
瓦尔当前年份= LocalDate.now().年份

相关问题