如何在 Android 中无需添加一天即可将"yyyy-MM-dd'T'HH:mm:ssZZZZZ"转换为"yyyy-MM-dd"?



我在安卓中开发

字符串的日期是2020-04-23T23:59:59-04:00

并尝试使用以下函数将时间转换为22020-04-23

fun changeDateFormat(strDate:String):String {
return SimpleDateFormat("yyyy-MM-dd").format(SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZZZZZ").parse(strDate))
}

但它显示22020-04-24

我错过什么了吗?提前谢谢。

您应该使用java.time中的DateTimeFormatterLocalDate

例如

val timestampAsDateString = "2020-04-23T23:59:59-04:00"
val format = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZZZZZ")
val date = LocalDate.parse(timestampAsDateString, format)
Log.d("parseTesting","Date : ${date}") // logs 2020-04-23

由于CCD_ 4是CCD_ 5日历系统中没有时区的日期,因此输出已经是yyyy-MM-dd格式。

以下是如何实现

val dateInString = "2020-04-23T23:59:59-0400"
val ldt: LocalDateTime = LocalDateTime.parse(dateInString, DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ"))
val currentZoneId: ZoneId = ZoneId.systemDefault()
val currentZonedDateTime: ZonedDateTime = ldt.atZone(currentZoneId)
val format: DateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd")
val formattedDate = format.format(currentZonedDateTime)
println(formattedDate)

您的时间不得包含介于(-04:00(之间的冒号

这对我来说效果很好,并返回了所需的结果

fun changeDateFormat(strDate:String):String {
val sourceSdf = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.getDefault())
val requiredSdf = SimpleDateFormat("yyyy-MM-dd", Locale.getDefault())
return requiredSdf.format(sourceSdf.parse(strDate))
}

我用解决

val dateFormat1: DateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
val dateFormat2: DateFormat = SimpleDateFormat("yyyy-MM-dd")
val datep: Date = dateFormat1.parse(date)
val datei = dateFormat2.format(datep)
val dateconverted = LocalDate.parse(datei.toString(), ISO_DATE)

相关内容

最新更新