Kotlin - проблема получения миллисекунд за прошедшее время - PullRequest
0 голосов
/ 02 марта 2020

Я создал метод ниже, чтобы получить миллисекунды из 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

Result am получать неправильно. т.е. для 13:00 миллисекунды должны быть 48600 Но, я получаю:

13:00 >>>>>: 45000000, должно быть 48600

14:00 >>>>>: 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
}

1 Ответ

1 голос
/ 02 марта 2020

Вам нужно получить часы дня, используя Календарь. А затем умножьте его на 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)
}

Ваш текущий код возвращает время в миллисекундах с миллисекунд с 1 января 1970 года, 00:00:00 по Гринвичу, ко времени, которое вы указали в качестве ввода.


Примечание:

Я не уверен, что вы пытаетесь достичь таким образом, но, похоже, это не так Хороший путь. Если вы сможете подробнее рассказать о своих требованиях, я или кто-либо другой может помочь вам найти лучшие способы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...