KotlinAndroid / Java String DateTime Format,API21

yvfmudvl  于 2023-03-24  发布在  Kotlin
关注(0)|答案(6)|浏览(180)

我想将字符串日期时间转换为格式化字符串。例如“2018-12- 14 T09:55:00”到“14.12.2018 09:55”作为String =〉Textview.text
我如何使用Kotlin或java for android实现这一点?

c9qzyr3d

c9qzyr3d1#

将其解析为LocalDateTime,然后格式化:

LocalDateTime localDateTime = LocalDateTime.parse("2018-12-14T09:55:00");
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm");
String output = formatter.format(localDateTime);

如果api21不起作用,可以用途:

SimpleDateFormat parser = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
SimpleDateFormat formatter = new SimpleDateFormat("dd.MM.yyyy HH:mm");
String output = formatter.format(parser.parse("2018-12-14T09:55:00"));

或导入ThreeTenABP。

kiayqfof

kiayqfof2#

KotlinAPI级别26或更高:

val parsedDate = LocalDateTime.parse("2018-12-14T09:55:00", DateTimeFormatter.ISO_DATE_TIME)
val formattedDate = parsedDate.format(DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm"))

低于API水平26:

val parser =  SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss")
val formatter = SimpleDateFormat("dd.MM.yyyy HH:mm")
val formattedDate = formatter.format(parser.parse("2018-12-14T09:55:00"))
j2cgzkjk

j2cgzkjk3#

如果您有一个表示特定时区中的值的日期时间,但该时区未编码在日期时间字符串本身中(例如,“2020-01- 29 T09:14:32.000Z”),并且您需要在您拥有的时区(例如,CDT)中显示此值

val parsed = ZonedDateTime.parse("2020-01-29T09:14:32.000Z", DateTimeFormatter.ISO_DATE_TIME).withZoneSameInstant(ZoneId.of("CDT"))

parsed ZoneDateTime将反映给定的时区。例如,此日期可能是2020年1月28日上午8:32。

oyt4ldly

oyt4ldly4#

在Kotlin中,你可以这样做来将字符串格式化为日期:

val simpleDateFormat = SimpleDateFormat("yyyy/MM/dd HH:mm:ss",Locale.getDefault())
val date = SimpleDateFormat("yyyy/MM/dd", Locale.getDefault()).format(simpleDateFormat.parse("2022/02/01 14:23:05")!!)

SimpleDateFormat类应该导入java.text.SimpleDateFormat以便在API上工作

gudnpqoy

gudnpqoy5#

这是KotlinOne Liner,如果无法解析输入日期,它将返回空字符串。

fun String.getDateInAnotherFormat(inputFormat: String,outputFormat: String):String = SimpleDateFormat(inputFormat, Locale.getDefault()).parse(this)?.let { SimpleDateFormat(outputFormat,Locale.getDefault()).format(it) }?:""

用法:

var dateStr = "2000-12-08"
dateStr.getDateInAnotherFormat("yyyy-MM-dd","MMM dd YYYY")
wz8daaqr

wz8daaqr6#

Kotlin:日期时间格式

fun getApiSurveyResponseDateConvertToLocal(date: String?): String? {
        return try {
            val inputFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.US)
            val outputFormat = SimpleDateFormat("yyyy-MM-dd", Locale.US)
            val datee = date?.let { inputFormat.parse(it) }
            datee?.let { outputFormat.format(it) }
        } catch (e: ParseException) {
            e.printStackTrace()
            ""
        }
    }

Java:日期时间格式

public static String getApiSurveyResponseDateConvertToLocal(String date) {

try {
    SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.US);
    SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.US);
   Date datee = inputFormat.parse(date);
    return outputFormat.format(datee);
} catch (ParseException e) {
    e.printStackTrace();
    return "";
}}

相关问题