Kotlin - 获取毫秒时间的问题
Kotlin - Issue in getting milliseconds for Time passed
我创建了以下方法来从 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 PM >>>>>:45000000,应该是 48600
2 PM >>>>>: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
}
您需要使用日历获取一天中的小时数。然后乘以 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 到您输入的时间。
注:
我不确定你想通过这种方式达到什么目的,但这似乎不是一个好方法。如果您可以详细说明您的要求,我或任何其他人可以指导您找到更好的方法。
我创建了以下方法来从 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 PM >>>>>:45000000,应该是 48600
2 PM >>>>>: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
}
您需要使用日历获取一天中的小时数。然后乘以 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 到您输入的时间。
注:
我不确定你想通过这种方式达到什么目的,但这似乎不是一个好方法。如果您可以详细说明您的要求,我或任何其他人可以指导您找到更好的方法。