Преобразование даты в строку

Kotlin:
Преобразование даты в строку

Как:

В Kotlin вы можете преобразовать Date в String с использованием класса SimpleDateFormat. Давайте напишем немного кода:

import java.text.SimpleDateFormat
import java.util.Date

fun main() {
    val date = Date() // Создаем объект Date для текущего времени
    val format = SimpleDateFormat("yyyy-MM-dd HH:mm:ss") // Определяем шаблон даты
    val dateString = format.format(date) // Преобразуем Date в String
    println(dateString) // Выводим строку с датой
}

Пример вывода может выглядеть так:

2023-03-25 14:45:32

Погружение в детали

До появления java.time класс SimpleDateFormat был основным инструментом для преобразования даты в строку в Java и, по наследству, в Kotlin. Да, Kotlin работает на Java Virtual Machine и удобно взаимодействует с библиотеками Java.

Однако с появлением Java 8 java.time вошел в игру, привнеся DateTimeFormatter с гораздо более совершенным API. Это стало переломным моментом, предложив безопасное, неизменяемое и потокобезопасное управление датой и временем. Поддержка этого в Kotlin реализована без проблем:

import java.time.LocalDateTime
import java.time.format.DateTimeFormatter

fun main() {
    val currentDate = LocalDateTime.now() // Получаем текущую дату и время
    val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
    val formattedDate = currentDate.format(formatter)
    println(formattedDate)
}

Альтернативы? Конечно. Для нестандартных требований или при работе с несколькими библиотеками дат, сторонние опции вроде Joda-Time ранее считались золотым стандартом. На сегодняшний день java.time покрывает большинство потребностей.

Что касается деталей реализации, SimpleDateFormat не является потокобезопасным, что означает, что он может споткнуться, когда используется в параллельных настройках. У DateTimeFormatter такой проблемы нет. Создайте один раз, используйте вечно — или, по крайней мере, на протяжении всего вашего приложения, не беспокоясь особо.

См. также

  • DateTimeFormatter JavaDoc для всех ваших потребностей в шаблонах: DateTimeFormatter
  • Если вы чувствуете ностальгию или нужны примеры для устаревших систем, вот информация о SimpleDateFormat: SimpleDateFormat