Pemformatan tanggal dengan multiplatform Kotlin Oleh Gorm Sorensen | Juni 2022

Programming

[ad_1]
Selamat datang Gaes di suratpembaca.web.id. Hari ini kita akan membahas tentang Linux yakni Pemformatan tanggal dengan multiplatform Kotlin Oleh Gorm Sorensen | Juni 2022

.

Sekiranya artikel tentang Pemformatan tanggal dengan multiplatform Kotlin Oleh Gorm Sorensen | Juni 2022

bisa memberikan faedah bagi Teman-teman semua. Langsung saja baca artikel ini
sampai selesai.

Tulis pemformat riwayat multi-platform sederhana menggunakan 1) pustaka asli atau 2) kotlinx.datetime.

Jam dan kalender
Foto Towfiqu barbhuiya di Unsplash

Memformat tanggal seringkali tampak membosankan untuk eksekusi perbatasan. Secara pribadi, setiap kali saya harus mengonversi tanggal ke format tertentu, saya berpikir sendiri – sekarang lagi? Bukankah kita pernah melakukan ini sebelumnya? Pasti ada cara untuk menulis kode semacam ini sekali dan tidak perlu repot lagi.

Contoh sederhana dari persyaratan pemformatan tanggal adalah kita harus menampilkan teks 18.06.2022 Jika (Anda dapat menebak) tanggal saat ini adalah 18 Juni 2022. Apakah cukup mudah untuk dilakukan di berbagai platform, bukan? Aman. Tetapi jika Anda menulis kode untuk Android dan iOS, misalnya di dua basis kode terpisah, Anda harus menulis logika pemformatan “sama” dua kali.

Untungnya bagi kami, kami dapat menggunakan Kotlin Multiplatform Mobile (KMM), yang memungkinkan kami untuk menulis kode yang sama sekali dan menggunakannya di berbagai platform.

Saya tidak akan membahas detail KMM di postingan ini. Langsung saja ke intinya dan masukkan kodenya saja.

Dalam posting ini saya akan menawarkan dua alternatif:

  1. Pemformat umum yang hanya ditulis dalam Kotlin, yang kami tambahkan kodenya commonMain kan androidMain Dan iosMain Oleh karena itu memperkenalkan logika spesifik dari platform.
  2. Menggunakan perpustakaan multi-platform yang disebut kotlinx-datetime (Periksa repositori di sini), tempat kami menyimpan semua kode kami commonMain .

Untuk singkatnya, saya hanya akan fokus mendukung cap waktu dalam format ISO 8601 serta mendukung format tanggal. dd.MM.yyyy .

Mari kita definisikan kelas sederhana ini di mana kita menempatkan commonMain:

(Ya, DateTime Bukan nama lengkap untuk kelas seperti itu. Kita bisa menamakannya Iso8601TimestampFormatter Atau serupa, tetapi saya memilih untuk memberikan nama yang berbeda.)

Hal ini cukup mendasar. Kami memiliki cap waktu ISO 8601 serta template (dd.MM.yyyyDan harus mengembalikan tanggal yang diformat.

Jadi seperti apa tampilannya di Android?

Kami akan menggunakannya java.time API, meskipun Android SDK kami harus minimal 26 (jika Anda ingin menggunakan API ini di versi SDK yang lebih rendah, Anda dapat menggunakan ThreeTen Backport atau desugaring).

Berikut ini harus disertakan: androidMain :

Kami menggunakan rincian cap waktu kami ZonedDateTime API, dan selanjutnya memformatnya dengan format kami melalui DateTimeFormatter .

Bagaimana dengan iOS?

Alih-alih menggunakan pustaka Java, yang tidak tersedia di iOS, kami merujuknya sebagai gantinya Foundation Kerangka kerja ini mencakup semua yang kita butuhkan untuk memformat riwayat (dan banyak lagi).

Mari kita masukkan yang berikut ini di dalamnya iosMain :

Kami memiliki contoh NSDateFormatter Dan atur zona waktu, lokasi, dan templat. Akhirnya kami mengutip stringFromDate() Untuk mendapatkan string yang diformat

Anda mungkin bertanya – mengapa tidak menggunakan API seperti Swift DateFormatter kan TimeZone , Dll.? TL; DR adalah bahwa kami tidak dapat mengimpor modul Swift murni apa pun dari kode Kotlin dalam status KMM saat ini. Impor API Objective-C (NS…), Namun, bekerja dengan baik. Lihat tautan ini untuk informasi lebih lanjut.

Mari kita coba!

Karena pengujian kami adalah platform independen, cukup untuk memasukkannya ke dalamnya commonTest Hanya:

Saat Android Studio diminta untuk menjalankan eksperimen, kita akan diminta untuk menggunakan tujuan tertentu (bergantung pada bagaimana proyek kita dikonfigurasi):

Cuplikan layar Android Studio saat melakukan semua pengujian di DateTimeTests
Cuplikan layar Android Studio saat melakukan semua pengujian di DateTimeTests

Biasanya Anda memilih di antara satu :testDebugUnitTest Dan iosX64 . Dengan melakukan keduanya, kita dapat melihat bahwa tes diterima:

Hasil tes (semua diterima)
Hasil tes

Jika Anda tidak ingin menjalankan eksperimen melalui pop-up Android Studio (atau Anda tidak perlu membuang waktu berharga untuk memilih opsi yang berbeda di jendela pop-up), Anda cukup menjalankan perintah ini. $ ./gradlew :shared:allTests Yang melakukan semua tes proyek pada semua kemungkinan target.

Oke, bagus, tapi saya benar-benar tidak ingin menulis kode terkait platform jika itu bisa dihindari.

Mari kita lihat apakah kita bisa menghindarinya! Mereka menciptakan orang-orang baik di Kotlin / JetBrains kotlinx-datetime Perpustakaan, yang akan kita bahas nanti.

Saya sarankan membaca dokumen di halaman GitHub untuk perpustakaan ini. Adapun pekerjaan kita, mari kita atasi dengan menambahkan ketergantungan pada pekerjaan kita commonMain Koleksi sumber:

Sekarang mari kita gunakan Instant Dan LocalDateTime Untuk menemukan hari, bulan, dan tahun cap waktu, dan akhirnya mengembalikan tanggal yang diformat sebagai string:

Pada zeroPrefixed() Fungsi plugin adalah salah satu fungsi yang saya buat untuk menghindari fakta bahwa tidak ada non-JVM String.format() Setara dengan Perpustakaan Standar Kathleen saat ini, yang memungkinkan kita untuk dengan mudah memformat bilangan bulat sebagai string dengan awalan nol. Anda dapat membuat kode untuk zeroPrefixed() Di Sini.

Tulis tesnya (mengapa tidak?)

Kami menjelajahi dua pendekatan untuk menulis logika pemformatan riwayat yang berfungsi di Android dan iOS.

Pendekatan pertama, yang membutuhkan logika khusus platform, memungkinkan kita untuk menggunakan pola waktu historis secara langsung. Namun, kita harus menulis kode yang sesuai untuk setiap platform.

Jelas, pendekatan yang membutuhkan lebih sedikit kode adalah metode kedua. Itu bergantung pada perpustakaan pihak ketiga yang saat ini tidak mendukung pemformatan berbagai templat / format tanggal-waktu, itulah sebabnya kami harus menulis bagian itu sendiri. Di sisi lain, ini adalah perpustakaan multi-platform dan kami tidak perlu khawatir tentang API khusus platform.

Kami harap Anda menikmati pengkodean di Kotlin untuk berbagai platform!

Itu tadi materi mengenai Pemformatan tanggal dengan multiplatform Kotlin Oleh Gorm Sorensen | Juni 2022

, terimakasih sudah berkunjung di website ini, mudah-mudahan postingannya ada manfaatnya ya.

[ad_2]

Source link

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan.