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型として取得することができます。