【问题标题】:Kotlin - Issue in getting milliseconds for Time passedKotlin - 获得毫秒时间的问题
【发布时间】:2020-03-02 05:50:02
【问题描述】:

我创建了以下方法来获取 12 小时格式时间的毫秒数:

fun getMillisecondsFromTime(time: String): String {
    val formatter = SimpleDateFormat("hh aa")
    formatter.isLenient = false

    val oldDate = formatter.parse(getLocaleTime(time,"hh aa"))
    val oldMillis = oldDate.time
    return "" + oldMillis
}

我在以下四个不同的时间调用此方法:

var strTime1:String = DateUtils.getMillisecondsFromTime("1 PM")//13 * 3600
var strTime2:String = DateUtils.getMillisecondsFromTime("2 PM")//14 * 3600
var strTime3:String = DateUtils.getMillisecondsFromTime("1 AM")//1 * 3600
var strTime4:String = DateUtils.getMillisecondsFromTime("2 AM")//2 * 3600

得到的结果是错误的。即 1 PM 毫秒应该是 48600 但是,我得到了:

下午 1 点>>>>>:45000000,应该是 48600

下午 2 点>>>>>:48600000,应该是 50400

可能是什么问题?

编辑:获取当地时间如下:

fun getLocaleTime(date: String, timeFormat: String): String {

    val df = SimpleDateFormat(timeFormat, Locale.ENGLISH)
    df.timeZone = TimeZone.getTimeZone("UTC")
    val date = df.parse(date)
    df.timeZone = TimeZone.getDefault()
    val formattedDate = df.format(date)
    return formattedDate
}

【问题讨论】:

    标签: android kotlin time datetime-format milliseconds


    【解决方案1】:

    您需要使用日历获取一天中的几个小时。然后乘以 3600。喜欢

    fun getMillisecondsFromTime(time: String): String {
        val formatter = SimpleDateFormat("hh aa")
        formatter.isLenient = false
    
        val oldDate = formatter.parse(getLocaleTime(time,"hh aa"))
        // val oldMillis = oldDate.time
    
        val cal = GregorianCalendar.getInstance()
        cal.time = oldDate
        val hourIn24Format = cal.get(Calendar.HOUR_OF_DAY)
    
        return "" + (hourIn24Format * 3600)
    }
    

    您当前的代码以毫秒为单位返回从 1970 年 1 月 1 日 00:00:00 GMT 到您输入的时间的毫秒数。


    注意:

    我不确定你想以这种方式实现什么,但这似乎不是一个好方法。如果您能详细说明您的要求,我或任何其他人可以指导您找到更好的方法。

    【讨论】:

    • 我有时间的静态列表,包括下午 1 点、下午 2 点、下午 3 点。并且不必占用当前时间。它是 12 小时时间格式的列表。我需要转换为毫秒。
    • 我已经检查过了,下午 1 点返回 64800 而不是 48600(13*3600) ..!
    • 让我检查一下。我认为这需要多花 1 小时
    • 是12小时格式,需要把12小时格式时间转换成毫秒。
    • @JaiminModi 我明白你在说什么。您的输出需要 24 小时格式,因为您使用 13 表示下午 1 点。分享 getLocalTime() 的代码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-12
    • 2019-11-02
    • 1970-01-01
    • 2018-07-22
    • 2016-06-02
    • 1970-01-01
    相关资源
    最近更新 更多