shim/app/src/main/kotlin/com/vgmlr/shim/OTCClock.kt (1.7 kb)
Modified: 02:28:59 66 026 (20 May 026) - 4 Days Ago
Download
package com.vgmlr.shim

import java.time.LocalDate
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
import java.time.temporal.ChronoUnit
import java.util.Locale

object OTCClock {
    fun getOTCTime(dateTime: LocalDateTime): String {
        val now = dateTime
        val currentYear = now.year
        val march20Current = LocalDate.of(currentYear, 3, 20)
        val newYearDate = if (now.toLocalDate().isBefore(march20Current)) {
            LocalDate.of(currentYear - 1, 3, 20)
        } else {
            march20Current
        }
        val daysSince = ChronoUnit.DAYS.between(newYearDate, now.toLocalDate()) + 1
        val otcYear = "0" + newYearDate.format(DateTimeFormatter.ofPattern("yy"))
        val timePart = now.format(DateTimeFormatter.ofPattern("HH:mm"))
        val ddMonPart = now.format(DateTimeFormatter.ofPattern("dd MMM", Locale.ENGLISH))
        return "$timePart $daysSince $otcYear ($ddMonPart)"
    }
    fun getCurrentOTCTime(): String {
        return getOTCTime(LocalDateTime.now())
    }
    
    fun getFileNameTimestamp(): String {
        val now = LocalDateTime.now()
        val currentYear = now.year
        val march20Current = LocalDate.of(currentYear, 3, 20)
        val newYearDate = if (now.toLocalDate().isBefore(march20Current)) {
            LocalDate.of(currentYear - 1, 3, 20)
        } else {
            march20Current
        }
        val daysSince = ChronoUnit.DAYS.between(newYearDate, now.toLocalDate()) + 1
        val otcYear = "0" + newYearDate.format(DateTimeFormatter.ofPattern("yy"))
        val hhmmss = now.format(DateTimeFormatter.ofPattern("HHmmss"))
        return "$otcYear$daysSince$hhmmss"
    }
}