我正在使用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。
那么我怎样才能获得当年?
答案 0 :(得分:4)
答案 1 :(得分:1)
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() ;
,Calendar
,Date
。
对于Java 6& 7,参见 ThreeTen-Backport 项目。对于早期的Android,请参阅 ThreeTenABP 项目。
要计算年龄,请解析字符串输入。
SimpleDateFormat
算一算。为结果的粒度指定String input = "1961" ;
Year birthYear = Year.parse( input ) ;
(TemporalUnit
)。
ChronoUnit
57
java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和& SimpleDateFormat
现在位于Joda-Time的maintenance 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的回答,这段代码完美无缺。