如何在Android中获得当前年份(最低API版本15)

时间:2018-03-24 10:27:13

标签: java android date kotlin

我正在使用Kotlin构建一个简单的年龄计算器应用程序。

public fun calculateage(view: View){
    val dob: String = etbirth.text.toString()
    val currentyear = calendar.getInstance().get(Calendar.Year)
    val age = currentyear - dob.toInt()
    tvage.setText("$age")
}

此方法在API级别15中不可用,要求最低API级别为24。

那么我怎样才能获得当年?

3 个答案:

答案 0 :(得分:4)

val year = Calendar.getInstance().get(Calendar.YEAR)

我测试了这段代码,即使min api级别为15,也能正常运行。

enter image description here

这是你想要的照片吗?

答案 1 :(得分:1)

TL;博士

var replacement = "car";
var toReplace = "boat";
var str = "banana boats or boat";

var toReplaceRegex = new RegExp(toReplace, "g");
str = str.replace(toReplaceRegex, replacement); 
console.log(str); // prints "banana cars or car"
  

57

org.threeten.bp.Year.parse( // Parse a string into a `Year` object. Using the back-port of *java.time* classes found in the *ThreeTen-Backport* project, further adapted for earlier Android in the *ThreeTenABP* project. "1961" // String input representing a year. ) .until( // Calculate elapsed time. Year.now( // Get the current date’s year as a `Year` object rather than a mere integer number. ZoneId.of( "Africa/Tunis" ) // Get the current year as seen in the wall-clock time used by the people of a particular region (time zone). For any given moment, the date varies around the globe by zone. ) , ChronoUnit.YEARS // Specify the granularity of the elapsed time using `ChronoUnit` enum. ) // Return a `long`.

  

如何在Android中获得当前年份(最低API版本15)

有一堂课!

Java语法中显示的

Year(我还不知道Kotlin)

Year

最好明确指定所需/预期的时区,而不是隐式依赖JVM的当前默认时区。

Year.now()

在代码周围传递此Year.now( ZoneId.of( "Europe/Lisbon" ) ) 对象,而不仅仅是整数。这样,您就可以type-safety,并使您的代码更具自我记录功能。如果您需要号码,请拨打Year.getValue

Year

现代方法使用 java.time 类而不是麻烦的旧遗留日期时间类。像瘟疫一样避免Year y = Year.now( ZoneId.systemDefault() ) ; int yearNumber = y.getValue() ; CalendarDate

对于Java 6& 7,参见 ThreeTen-Backport 项目。对于早期的Android,请参阅 ThreeTenABP 项目。

年龄

要计算年龄,请解析字符串输入。

SimpleDateFormat

算一算。为结果的粒度指定String input = "1961" ; Year birthYear = Year.parse( input ) ; TemporalUnit)。

ChronoUnit
  

57

关于 java.time

java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.DateCalendar和& SimpleDateFormat

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

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

您可以直接与数据库交换 java.time 对象。使用符合JDBC driver或更高版本的JDBC 4.2。不需要字符串,不需要Year now = Year.now( ZoneId.systemDefault() ) ; // 2018 today. long years = birthYear.until( now , ChronoUnit.YEARS ) ; 类。

从哪里获取java.time类?

答案 2 :(得分:0)

public fun calculateage(view: View){
        val dob: String = etbirth.text.toString()
        val sdf = SimpleDateFormat("yyyy")
        val currentyear1: String = sdf.format(Date()).toString()
     //   val currentyear = Calendar.get(Calendar.YEAR)
        val age = currentyear1.toInt() - dob.toInt()
        tvage.setText("$age")
    }
  

谢谢大家的尝试。谢谢jyoti的回答,这段代码完美无缺。