最新消息:Welcome to the puzzle paradise for programmers! Here, a well-designed puzzle awaits you. From code logic puzzles to algorithmic challenges, each level is closely centered on the programmer's expertise and skills. Whether you're a novice programmer or an experienced tech guru, you'll find your own challenges on this site. In the process of solving puzzles, you can not only exercise your thinking skills, but also deepen your understanding and application of programming knowledge. Come to start this puzzle journey full of wisdom and challenges, with many programmers to compete with each other and show your programming wisdom! Translated with DeepL.com (free version)

android - LocalDate to string format with HH:mm - Stack Overflow

matteradmin5PV0评论

I have a Kotlin code that retrives date (in text field) from SQLite DB and put it into a LocalDate variable (pill.startDay) from whom I show the date as below

val dtf: DateTimeFormatter = DateTimeFormatter.ofPattern("dd/MM/uuuu", Locale.ITALY)
val startDayStr: String =dtf.format(pill.startDay)
holder.tvStartDate.text = "Start: $startDayStr"

Now I need to show also hours and minutes but I've tryed many patterns (like "dd/MM/uuuu HH:mm" or "dd/MM/uuuu'T'HH:mm" or "dd/MM/uuuu HH:mm z") without success (the app always crashes)

The full data class is:

data class Pill(val id: Int,
                val pillName: String,
                val yesDays: Int,
                val pauseDays: Int = 0,
                val startDay: LocalDate = LocalDate.now())

The error is:

FATAL EXCEPTION: main Process: com.example.mytestapp, PID: 24087 java.time.temporal.UnsupportedTemporalTypeException: Unsupported field: HourOfDay

I have a Kotlin code that retrives date (in text field) from SQLite DB and put it into a LocalDate variable (pill.startDay) from whom I show the date as below

val dtf: DateTimeFormatter = DateTimeFormatter.ofPattern("dd/MM/uuuu", Locale.ITALY)
val startDayStr: String =dtf.format(pill.startDay)
holder.tvStartDate.text = "Start: $startDayStr"

Now I need to show also hours and minutes but I've tryed many patterns (like "dd/MM/uuuu HH:mm" or "dd/MM/uuuu'T'HH:mm" or "dd/MM/uuuu HH:mm z") without success (the app always crashes)

The full data class is:

data class Pill(val id: Int,
                val pillName: String,
                val yesDays: Int,
                val pauseDays: Int = 0,
                val startDay: LocalDate = LocalDate.now())

The error is:

FATAL EXCEPTION: main Process: com.example.mytestapp, PID: 24087 java.time.temporal.UnsupportedTemporalTypeException: Unsupported field: HourOfDay

Share Improve this question edited Nov 16, 2024 at 11:50 genespos asked Nov 16, 2024 at 11:34 genesposgenespos 3,3116 gold badges43 silver badges76 bronze badges 2
  • Please share the stacktrace from the crash. – tyg Commented Nov 16, 2024 at 11:37
  • Also, what type is pill.startDay? Fully qualified, please. – tyg Commented Nov 16, 2024 at 11:38
Add a comment  | 

2 Answers 2

Reset to default 4

You are getting UnsupportedTemporalTypeException because you have defined your data with LocalDate. LocalDate doesn't have any information about the time and once you are trying to convert it to time, it causes a crash.

You need to update your data class Pill to have LocalDateTime instead of LocalDate:

data class Pill(
    val id: Int,
    val pillName: String,
    val yesDays: Int,
    val pauseDays: Int = 0,
    val startDay: LocalDateTime = LocalDateTime.now()
)

The reason you cannot print hours of day, minutes of hour and further down the scala is that a LocalDate exclusively stores information about day of month, month of year and year.

What you need seems to be a LocalDateTime, which is combined from a LocalDate and a LocalTime.

Post a comment

comment list (0)

  1. No comments so far