Saya telah mencoba untuk mengubah nilai detik (dalam variabel BigDecimal) menjadi string dalam editText seperti "1 jam 22 menit 33 detik" atau semacamnya.
Saya sudah mencoba ini:
String sequenceCaptureTime = "";
BigDecimal roundThreeCalc = new BigDecimal("0");
BigDecimal hours = new BigDecimal("0");
BigDecimal myremainder = new BigDecimal("0");
BigDecimal minutes = new BigDecimal("0");
BigDecimal seconds = new BigDecimal("0");
BigDecimal var3600 = new BigDecimal("3600");
BigDecimal var60 = new BigDecimal("60");
(Saya memiliki roundThreeCalc yang merupakan nilai dalam hitungan detik jadi saya mencoba mengonversinya di sini.)
hours = (roundThreeCalc.divide(var3600));
myremainder = (roundThreeCalc.remainder(var3600));
minutes = (myremainder.divide(var60));
seconds = (myremainder.remainder(var60));
sequenceCaptureTime = hours.toString() + minutes.toString() + seconds.toString();
Lalu saya mengatur editText ke sequnceCaptureTime String. Tapi itu tidak berhasil. Itu memaksa menutup aplikasi setiap saat. Saya benar-benar keluar dari kedalaman saya di sini, bantuan apa pun sangat dihargai. Selamat membuat kode!
java
android
string
android-edittext
bigdecimal
rabbitt
sumber
sumber
Jawaban:
Anda harus lebih beruntung dengan
Ini akan menghilangkan nilai desimal setelah setiap pembagian.
Edit: Jika itu tidak berhasil, coba ini. (Saya baru saja menulis dan mengujinya)
sumber
DateUtils.formatElapsedTime
...Apakah perlu menggunakan BigDecimal? Jika Anda tidak perlu, saya akan menggunakan int atau long selama beberapa detik, dan ini akan sedikit menyederhanakan:
Anda mungkin ingin mengisi masing-masing untuk memastikan nilai dua digit (atau apa pun) dalam string.
sumber
String.format("%02d:%02d:%02d", hours, minutes, seconds);
String.format(Locale.ENGLISH, "%02d:%02d:%02d", hours, minutes, seconds)
DateUtils.formatElapsedTime
...DateUtils.formatElapsedTime(long)
, memformat waktu yang telah berlalu dalam bentuk "MM:SS
" atau "H:MM:SS
". Ini mengembalikan String yang Anda cari. Anda dapat menemukan dokumentasinya di sinisumber
Inilah kode yang berfungsi:
sumber
DateUtils.formatElapsedTime
...Sesuatu yang sangat membantu di Java 8
sumber
Saya lebih suka java yang dibangun di perpustakaan TimeUnit
sumber
sumber
Ini adalah solusi sederhana saya:
Test Results
:sumber
Oleh karena itu, saya suka membuat semuanya sederhana:
Hasilnya adalah: 01 Jam 23 Menit 20 Detik
sumber
Jika Anda menginginkan unit
h
,min
dansec
untuk suatu durasi Anda dapat menggunakan ini:Itu banyak sekali operator bersyarat. Metode ini akan mengembalikan string tersebut:
sumber
Kode Ini Berfungsi dengan Baik:
sumber
Cara yang bagus dan mudah untuk melakukannya menggunakan GregorianCalendar
Impor ini ke dalam proyek:
Lalu:
sumber
Saya menggunakan ini:
sumber
Inilah fungsi saya untuk mengatasi masalah tersebut:
sumber
Saya tahu ini cukup tua tetapi di java 8:
sumber
hanya beberapa menit dan detik gunakan ini
sumber
Saya menggunakan ini dengan python untuk mengubah float yang mewakili detik menjadi jam, menit, detik, dan mikrodetik. Ini cukup elegan dan berguna untuk mengkonversi ke tipe datetime melalui strptime untuk mengkonversi. Ini juga dapat dengan mudah diperpanjang ke interval yang lebih lama (minggu, bulan, dll.) Jika diperlukan.
sumber
Saya telah mencoba cara terbaik dan lebih sedikit kode tetapi mungkin agak sulit untuk memahami bagaimana saya menulis kode saya tetapi jika Anda pandai matematika, itu sangat mudah
jam kelas {
}
lebih dari itu akurat!
sumber
Dengan Java 8, Anda dapat dengan mudah mencapai waktu dalam format String dari detik yang panjang seperti,
Di sini, nilai yang diberikan adalah maksimum yang diizinkan untuk dikonversi (hingga 24 jam) dan hasilnya adalah
Kelebihan: 1) Tidak perlu mengonversi secara manual dan menambahkan 0 untuk satu digit
Kekurangan: bekerja hanya hingga 24 jam
sumber
Dengan Java 8, Anda dapat dengan mudah mencapai waktu dalam format LocalTime dari detik yang panjang seperti,
Di sini, nilai yang diberikan adalah maksimum yang diizinkan untuk dikonversi (hingga 24 jam) dan hasilnya adalah
Kelebihan: 1) Tidak perlu mengonversi secara manual dan menambahkan 0 untuk satu digit
Kekurangan: bekerja hanya hingga 24 jam
sumber
Durasi dari java.time
Keluaran dari potongan ini adalah:
Jika ada pecahan detik bukan nol dalam
BigDecimal
kode ini tidak akan berfungsi sebagaimana mestinya, tetapi Anda mungkin dapat memodifikasinya. Kode berfungsi di Java 9 dan yang lebih baru. Di Java 8, konversi dariDuration
jam ke menit dan detik sedikit lebih bertele-tele, lihat tautan di bagian bawah untuk mengetahui caranya. Saya menyerahkan kepada Anda untuk memilih bentuk kata tunggal atau jamak yang benar ( jam atau jam , dll.).Tautan
Duration
ke hari, jam, menit dan detik di Java 8.sumber