Kotlin将TimeStamp转换为DateTime

时间:2017-11-12 15:01:26

标签: java kotlin timestamp

我试图找出如何在Kotlin中将timestamp转换为datetime,这在Java中非常简单,但我无法在Kotlin中找到它的任何等价物。

例如:纪元时间戳(自1070-01-01以来的秒数)1510500494 ==> DateTime对象2017-11-12 03:28:14

在Kotlin中是否有任何解决方案,或者我必须在Kotlin中使用Java语法?请给我一个简单的示例,以说明如何解决此问题。提前谢谢。

this link不是我问题的答案

9 个答案:

答案 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()
        }
   }