error: incompatible types: Object cannot be converted to LocalDate
error: incompatible types: Object cannot be converted to LocalDate
在我的 JSON 响应中,我收到日期作为时间戳值,例如下面:
"dt":1620345600
我正在尝试使用 ThreeTen BP 库将其转换为 LocalDate。我尝试按如下方式应用 TypeConverter
@TypeConverter
@JvmStatic
fun timestampToDateTime(dt : Int?) = dt?.let {
try {
val sdf = SimpleDateFormat("yyyy-MMM-dd HH:mm")
val netDate = Date(dt * 1000L)
val sdf2 = sdf.format(netDate)
LocalDate.parse(sdf2, DateTimeFormatter.ISO_LOCAL_DATE_TIME)
} catch (e : Exception) {
e.toString()
}
}
现在我可能错了,我假设有问题的 'Object' 是 SimpleDateFormat 字符串。但是我似乎无法找到将 JSON 响应 Int 插入 LocalDate DateTimeFormatter 的方法,因为这需要传入一个字符串。感谢任何帮助
DateTimeFormatter.ISO_LOCAL_DATE_TIME
期待以下日期格式 yyyy-MM-dd'T'hh:mm:ss
您可以将第一个格式化程序更改为
val sdf = SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss")
并使用 DateTimeFormatter.ISO_LOCAL_DATE_TIME
更新
整个解决方案:
try {
val sdf = SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss")
val netDate = Date(dt * 1000L)
val sdf2 = sdf.format(netDate)
LocalDate localDate = LocalDate.parse(sdf2, DateTimeFormatter.ISO_LOCAL_DATE_TIME)
Log.d("TAG", "date " + localDate.toString());
} catch (e : Exception) {
e.printStackTrace()
}
当您使用 fun() = kompiler 尝试猜测 return 类型。在您的情况下,请尝试块 returns 日期,捕获块 returns 字符串,这些类型的共同父级 - 对象。您必须明确设置 return 类型。试试这个并留意日期格式。您的代码不正确。
@TypeConverter
fun timestampToDateTime(dt : Int?): LocalDate? {
if (dt == null) {
return null
}
return try {
val sdf = SimpleDateFormat("yyyy-MM-dd'T'HH:mm")
val netDate = Date(dt * 1000L)
val sdf2 = sdf.format(netDate)
LocalDate.parse(sdf2, DateTimeFormatter.ISO_LOCAL_DATE_TIME)
} catch (e : Exception) {
//TODO handle exception
null
}
}
在我的 JSON 响应中,我收到日期作为时间戳值,例如下面:
"dt":1620345600
我正在尝试使用 ThreeTen BP 库将其转换为 LocalDate。我尝试按如下方式应用 TypeConverter
@TypeConverter
@JvmStatic
fun timestampToDateTime(dt : Int?) = dt?.let {
try {
val sdf = SimpleDateFormat("yyyy-MMM-dd HH:mm")
val netDate = Date(dt * 1000L)
val sdf2 = sdf.format(netDate)
LocalDate.parse(sdf2, DateTimeFormatter.ISO_LOCAL_DATE_TIME)
} catch (e : Exception) {
e.toString()
}
}
现在我可能错了,我假设有问题的 'Object' 是 SimpleDateFormat 字符串。但是我似乎无法找到将 JSON 响应 Int 插入 LocalDate DateTimeFormatter 的方法,因为这需要传入一个字符串。感谢任何帮助
DateTimeFormatter.ISO_LOCAL_DATE_TIME
期待以下日期格式 yyyy-MM-dd'T'hh:mm:ss
您可以将第一个格式化程序更改为
val sdf = SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss")
并使用 DateTimeFormatter.ISO_LOCAL_DATE_TIME
更新
整个解决方案:
try {
val sdf = SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss")
val netDate = Date(dt * 1000L)
val sdf2 = sdf.format(netDate)
LocalDate localDate = LocalDate.parse(sdf2, DateTimeFormatter.ISO_LOCAL_DATE_TIME)
Log.d("TAG", "date " + localDate.toString());
} catch (e : Exception) {
e.printStackTrace()
}
当您使用 fun() = kompiler 尝试猜测 return 类型。在您的情况下,请尝试块 returns 日期,捕获块 returns 字符串,这些类型的共同父级 - 对象。您必须明确设置 return 类型。试试这个并留意日期格式。您的代码不正确。
@TypeConverter
fun timestampToDateTime(dt : Int?): LocalDate? {
if (dt == null) {
return null
}
return try {
val sdf = SimpleDateFormat("yyyy-MM-dd'T'HH:mm")
val netDate = Date(dt * 1000L)
val sdf2 = sdf.format(netDate)
LocalDate.parse(sdf2, DateTimeFormatter.ISO_LOCAL_DATE_TIME)
} catch (e : Exception) {
//TODO handle exception
null
}
}