All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.iheart.thomas.TimeUtil.scala Maven / Gradle / Ivy

There is a newer version: 0.46-RC4
Show newest version
/*
 * Copyright [2018] [iHeartMedia Inc]
 * All rights reserved
 */

package com.iheart.thomas

import java.time._
import java.time.format.DateTimeFormatter
import scala.util.Try

object TimeUtil {

  def defaultOffset: ZoneOffset = ZoneId.systemDefault().getRules.getOffset(Instant.now())

  def toDateTime(epochSecond: Long): OffsetDateTime =
    OffsetDateTime.ofInstant(Instant.ofEpochSecond(epochSecond), ZoneId.systemDefault())

  def parse(value: String): Option[OffsetDateTime] =
    Try(ZonedDateTime.parse(value, DateTimeFormatter.ISO_ZONED_DATE_TIME).toOffsetDateTime).toOption orElse
      Try(OffsetDateTime.parse(value, DateTimeFormatter.ISO_OFFSET_DATE_TIME)).toOption orElse
      Try(OffsetDateTime.parse(value, DateTimeFormatter.ISO_DATE_TIME)).toOption orElse
      List(
        DateTimeFormatter.ISO_DATE_TIME,
        DateTimeFormatter.ISO_LOCAL_DATE_TIME,
        DateTimeFormatter.ofPattern("M/d/yyyy H:m")
      ).collectFirst(Function.unlift { (tf: DateTimeFormatter) =>
          Try(LocalDateTime.parse(value, tf)).toOption
        }).orElse(
          List(
            DateTimeFormatter.ISO_OFFSET_DATE,
            DateTimeFormatter.ISO_DATE,
            DateTimeFormatter.ISO_LOCAL_DATE,
            DateTimeFormatter.ISO_ORDINAL_DATE,
            DateTimeFormatter.ofPattern("M/d/yyyy"),
            DateTimeFormatter.ofPattern("yyyy/M/d")
          ).collectFirst(Function.unlift { (tf: DateTimeFormatter) =>
              Try(LocalDate.parse(value, tf).atStartOfDay()).toOption
            })
        ).map(_.atOffset(defaultOffset))

  def currentMinute: OffsetDateTime = {
    val now = OffsetDateTime.now
    OffsetDateTime.of(now.getYear, now.getMonthValue, now.getDayOfMonth, now.getHour, now.getMinute, 0, 0, TimeUtil.defaultOffset)
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy