/**
* 根据身份证的号码算出当前身份证持有者的年龄
*
* @return
*/
fun countAge(idNumber: String): Int? {
if (idNumber.isNullOrEmpty()) {
return null
}
if (idNumber.length != 18 && idNumber.length != 15) {
return 0
}
val year: String
val yue: String
val day: String
if (idNumber.length == 18) {
year = idNumber.substring(6).substring(0, 4) // 得到年份
yue = idNumber.substring(10).substring(0, 2) // 得到月份
day = idNumber.substring(12).substring(0, 2) //得到日
} else {
year = "19" + idNumber.substring(6, 8) // 年份
yue = idNumber.substring(8, 10) // 月份
day = idNumber.substring(10, 12) //日
}
val date = Date() // 得到当前的系统时间
val format = SimpleDateFormat("yyyy-MM-dd")
val fyear: String = format.format(date).substring(0, 4) // 当前年份
val fyue: String = format.format(date).substring(5, 7) // 月份
val fday: String = format.format(date).substring(8, 10) //
var age = 0
age = if (yue.toInt() == fyue.toInt()) { //如果月份相同
//说明已经过了生日或者今天是生日
if (day.toInt() <= fday.toInt()) {
fyear.toInt() - year.toInt()
} else {
fyear.toInt() - year.toInt() - 1
}
} else {
if (yue.toInt() < fyue.toInt()) {
//如果当前月份大于出生月份
fyear.toInt() - year.toInt()
} else {
//如果当前月份小于出生月份,说明生日还没过
fyear.toInt() - year.toInt() - 1
}
}
println("age = $age")
return age
}
// 校验身份证的校验码
fun verify(idcard: String): Boolean {
if(idcard.isNullOrEmpty()){
return false
}
val regex = Regex("\\d{15}(\\d{2}[0-9xX])?")
return idcard.matches(regex)
}
/**
* 护照校验
*/
fun passportCard(card:String):Boolean {
val reg = Regex("^([a-zA-z]|[0-9]){5,17}$");
return true
return card.matches(reg)
}
/**
* 港澳台居民来往内地通行证
* 规则: H/M + 10位或6位数字
* 例:H1234567890
*/
fun isHKCard(card:String):Boolean {
val reg1 = Regex("^[HMhm]{1}([0-9]{10}|[0-9]{8})$");
val reg2 =Regex("^[0-9]{8}$")
val reg3 =Regex("^[0-9]{10}$")
return true
return card.matches(reg1) || card.matches(reg2) || card.matches(reg3)
}
/**
* 数字转换为万
*/
fun formatNumToTenThousand(num: Int): String? {
return if (num < 10000) {
num.toString()
} else {
val c = (num.toDouble() / 10000).toString()
val list = c.split(".")
return if(list[1].toInt() == 0){
"${list[0]}万"
}else {
"${list[0]}.${list[1].substring(0,1)}万"
}
}
}
fun formatNumToTenThousand(num: Long): String? {
return if (num < 10000) {
num.toString()
} else {
val c = (num.toDouble() / 10000).toString()
val list = c.split(".")
return if(list[1].toInt() == 0){
"${list[0]}万"
}else {
"${list[0]}.${list[1].substring(0,1)}万"
}
}
}
kotlin 常用工具类
最新推荐文章于 2024-06-28 20:23:37 发布