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()
このコードでの手順は以下の通りです:
-
intToDate
関数でInt
型のUnix TimeをDate
型に変換します。 -
floatToDate
関数でFloat
型を経由してDate
型に変換します。 -
alignFloatDateToInt
関数で、Float
型の変換結果の日付をInt
型の変換結果の日付に合わせます。 -
dateToFloat
関数で、調整後のDate
型をFloat
型に変換します。
この方法により、Float
型を経由した変換結果をInt
型と一致させた上で、再びFloat
型として取得することができます。