0
0

Float型とInt型でDate型の分を揃える

Posted at
1 / 2

Float型を経由した変換結果をInt型と一致させた上で、再びFloat型として取得します。

以下はその具体的なコード例です:

import java.util.Date
import java.util.Calendar

fun intToDate(unixTime: Int): Date {
    val millis = unixTime * 1000L
    return Date(millis)
}

fun floatToDate(unixTime: Int): Date {
    val floatTime = unixTime.toFloat()
    val millis = (floatTime * 1000).toLong()
    return Date(millis)
}

fun truncateToMinutes(date: Date): Date {
    val calendar = Calendar.getInstance()
    calendar.time = date
    calendar.set(Calendar.SECOND, 0)
    calendar.set(Calendar.MILLISECOND, 0)
    return calendar.time
}

fun alignFloatDateToInt(floatDate: Date, intDate: Date): Date {
    val calendar = Calendar.getInstance()
    calendar.time = floatDate

    val intCalendar = Calendar.getInstance()
    intCalendar.time = intDate

    // Align minutes and truncate seconds and milliseconds
    calendar.set(Calendar.MINUTE, intCalendar.get(Calendar.MINUTE))
    calendar.set(Calendar.SECOND, 0)
    calendar.set(Calendar.MILLISECOND, 0)

    return calendar.time
}

fun dateToFloat(date: Date): Float {
    return (date.time / 1000.0).toFloat()
}

fun main() {
    val unixTime: Int = 1625097600 // 2021-07-01 00:00:00 UTC

    val dateFromInt = intToDate(unixTime)
    val dateFromFloat = floatToDate(unixTime)

    // Align float date to int date in minutes
    val alignedDateFromFloat = alignFloatDateToInt(dateFromFloat, dateFromInt)

    println("Date from Int: $dateFromInt")
    println("Aligned Date from Float: $alignedDateFromFloat")

    // Convert aligned date to Float
    val floatFromAlignedDate = dateToFloat(alignedDateFromFloat)

    println("Float from aligned date: $floatFromAlignedDate")
}

main()

このコードでの手順は以下の通りです:

  1. intToDate関数でInt型のUnix TimeをDate型に変換します。
  2. floatToDate関数でFloat型を経由してDate型に変換します。
  3. alignFloatDateToInt関数で、Float型の変換結果の日付をInt型の変換結果の日付に合わせます。
  4. dateToFloat関数で、調整後のDate型をFloat型に変換します。

この方法により、Float型を経由した変換結果をInt型と一致させた上で、再びFloat型として取得することができます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0