我试图找出如何在Kotlin中将timestamp
转换为datetime
,这在Java中非常简单,但我无法在Kotlin中找到它的任何等价物。
例如:纪元时间戳(自1070-01-01以来的秒数)1510500494
==> DateTime对象2017-11-12 03:28:14
。
在Kotlin中是否有任何解决方案,或者我必须在Kotlin中使用Java语法?请给我一个简单的示例,以说明如何解决此问题。提前谢谢。
this link不是我问题的答案
答案 0 :(得分:7)
private fun getDateTime(s: String): String? {
try {
val sdf = SimpleDateFormat("MM/dd/yyyy")
val netDate = Date(Long.parseLong(s))
return sdf.format(netDate)
} catch (e: Exception) {
return e.toString()
}
}
答案 1 :(得分:5)
val sdf = SimpleDateFormat("dd/MM/yy hh:mm a")
val netDate = Date(item.timestamp)
val date =sdf.format(netDate)
Log.e("Tag","Formatted Date"+date)
“ sdf”是变量“ SimpleDateFormat”,可以在其中设置所需的日期格式。
“ netDate”是Date的变量。在Date中,我们可以发送时间戳值,并使用sdf.format(netDate)通过SimpleDateFormat打印该Date。
答案 2 :(得分:4)
它实际上就像Java一样。试试这个:
val stamp = Timestamp(System.currentTimeMillis())
val date = Date(stamp.getTime())
println(date)
答案 3 :(得分:2)
尽管它是Kotlin,但是您仍然必须使用Java API。一个Java 8+ API的示例,它转换了您在问题注释中提到的值1510500494
:
import java.time.*
val dt = Instant.ofEpochSecond(1510500494).atZone(ZoneId.systemDefault()).toLocalDateTime()
答案 4 :(得分:2)
class DateTest {
private val simpleDateFormat = SimpleDateFormat("dd MMMM yyyy, HH:mm:ss", Locale.ENGLISH)
@Test
fun testDate() {
val time = 1560507488
println(getDateString(time)) // 14 June 2019, 13:18:08
}
private fun getDateString(time: Long) : String = simpleDateFormat.format(time * 1000L)
private fun getDateString(time: Int) : String = simpleDateFormat.format(time * 1000L)
}
请注意,我们将乘以 1000L ,而不是1000。如果您将1000乘以1000,则得到错误的结果: 1970年1月17日,17: 25:59 。
答案 5 :(得分:1)
如果您尝试从Firebase转换时间戳。 这就是对我有用的。
val timestamp = data[TIMESTAMP] as com.google.firebase.Timestamp
val date = timestamp.toDate()
答案 6 :(得分:1)
这是Kotlin的解决方案
fun getShortDate(ts:Long?):String{
if(ts == null) return ""
//Get instance of calendar
val calendar = Calendar.getInstance(Locale.getDefault())
//get current date from ts
calendar.timeInMillis = ts
//return formatted date
return android.text.format.DateFormat.format("E, dd MMM yyyy", calendar).toString()
}
答案 7 :(得分:0)
fun stringtoDate(dates: String): Date {
val sdf = SimpleDateFormat("EEE, MMM dd yyyy",
Locale.ENGLISH)
var date: Date? = null
try {
date = sdf.parse(dates)
println(date)
} catch (e: ParseException) {
e.printStackTrace()
}
return date!!
}
答案 8 :(得分:0)
这对我有用-需要很长时间
import java.time.*
private fun getDateTimeFromEpocLongOfSeconds(epoc: Long): String? {
try {
val netDate = Date(epoc*1000)
return netDate.toString()
} catch (e: Exception) {
return e.toString()
}
}