如何在Android中获得当前年份?

时间:2016-12-28 06:05:45

标签: java android

我试过

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

但它给了我编译时错误

  

非静态方法' get(int)'无法从静态上下文中引用。

我从observable的调用方法调用此方法。

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

我也见过(new Date()).getYear();,但已被弃用。

7 个答案:

答案 0 :(得分:88)

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

试试这个

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

你很高兴。

答案 1 :(得分:5)

TL;博士

Year.now()
    .getValue()

java.time

其他答案使用麻烦的旧日期时间类,如日历。这些被java.time类取代。对于旧版Android,请参阅ThreeTen-Backport和ThreeTenABP项目。

Year class

而不是传递纯粹的整数代表一年,而不是传递对象。即,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及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.DateCalendar和&amp; SimpleDateFormat

现在位于Joda-Timemaintenance mode项目建议迁移到java.time类。

要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310

从哪里获取java.time类?

答案 2 :(得分:4)

是的,您收到错误,因为这不是静态方法。首先,您需要创建Calendar类的实例 即。

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

在这里你得到年份,今年!

答案 3 :(得分:1)

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

答案 4 :(得分:0)

你应该使用

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

答案 5 :(得分:0)

您是否尝试过以下代码

日历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);

答案 6 :(得分:-2)

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