如何在 Kotlin 中以本地时间获取当前日期(天,月和年)和时间(小时、分钟和秒)?
我尝试使用 LocalDateTime.now()
,但它给我一个错误,说 Call requires API Level 26 (curr min is 21)
。
我该如何在 Kotlin 中获取时间和日期?
试一试:
val sdf = SimpleDateFormat("dd/M/yyyy hh:mm:ss")
val currentDate = sdf.format(Date())
System.out.println(" C DATE is "+currentDate)
Date
的替代方案是什么? - Clément Cardonnel我使用 Calendar
编写了一个在 minSdkVersion < 26 时获取当前日期时间的实用方法。
fun Date.toString(format: String, locale: Locale = Locale.getDefault()): String {
val formatter = SimpleDateFormat(format, locale)
return formatter.format(this)
}
fun getCurrentDateTime(): Date {
return Calendar.getInstance().time
}
使用
import ...getCurrentDateTime
import ...toString
...
...
val date = getCurrentDateTime()
val dateInString = date.toString("yyyy/MM/dd HH:mm:ss")
java.util.Calendar.getInstance()
代表使用当前语言环境和时区表示当前时间。
您也可以选择导入并使用Joda-Time或其中一个适用于Android的分支。
您可以从日历实例中获取当前的年份、月份、日期等信息。
val c = Calendar.getInstance()
val year = c.get(Calendar.YEAR)
val month = c.get(Calendar.MONTH)
val day = c.get(Calendar.DAY_OF_MONTH)
val hour = c.get(Calendar.HOUR_OF_DAY)
val minute = c.get(Calendar.MINUTE)
如果您需要将其作为LocalDateTime使用,只需使用上述参数创建即可。
val myLdt = LocalDateTime.of(year, month, day, ... )
试试这个:
val date = Calendar.getInstance().time
val formatter = SimpleDateFormat.getDateTimeInstance() //or use getDateInstance()
val formatedDate = formatter.format(date)
您也可以使用自己的模式,例如:
val sdf = SimpleDateFormat("yyyy.MM.dd")
// 2020.02.02
使用getDateInstance()
、getDateTimeInstance()
或者getTimeInstance()
来获取本地格式化,或者使用新的SimpleDateFormat(String template, Locale locale)
,比如对于ASCII日期可以使用Locale.US。
前三个选项需要API 29或以上版本。
val dateNow = Calendar.getInstance().time
fun main(){
println(LocalDateTime.now().toString()) //2021-10-25T12:03:04.524
println(Calendar.getInstance().time) //Mon Oct 25 12:02:23 GST 2021
}
LocalDateTime.now().toString()
需要 Android O。 - Sattarfun getCurrentDate():String{
val sdf = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS")
return sdf.format(Date())
}
fun now(): String {
return SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()).format(Date())
}
val currentYear = SimpleDateFormat("yyyy",Locale.getDefault()).format(Date())
val currentMonth = SimpleDateFormat("MM",Locale.getDefault()).format(Date())
val currentDay = SimpleDateFormat("dd",Locale.getDefault()).format(Date())
val dateObject = Date(timeInMillis)
val calendarInstance = Calendar.getInstance()
calendarInstance.time = dateObject
val hour = calendarInstance.get(Calendar.HOUR)
val minute = calendarInstance.get(Calendar.MINUTE)
val ampm = if(calendarInstance.get(Calendar.AM_PM)==0) "AM " else "PM "
val date = calendarInstance.get(Calendar.DATE)
val month = calendarInstance.get(Calendar.MONTH)
val year = calendarInstance.get(Calendar.YEAR)
org.threeten.bp.LocalDateTime
,然后执行您尝试过的操作:LocalDateTime.now(yourTimeZone)
(我建议指定时区,但如果您不指定,将使用JVM时区设置)。更多信息请参见此问题:如何在Android项目中使用ThreeTenABP。 - Ole V.V.