Saya memiliki tanggal di dalam string, seperti "12-Desember-2012". Bagaimana cara mengubahnya menjadi milidetik (panjang)?
sumber
Saya memiliki tanggal di dalam string, seperti "12-Desember-2012". Bagaimana cara mengubahnya menjadi milidetik (panjang)?
Menggunakan SimpleDateFormat
String string_date = "12-December-2012";
SimpleDateFormat f = new SimpleDateFormat("dd-MMM-yyyy");
try {
Date d = f.parse(string_date);
long milliseconds = d.getTime();
} catch (ParseException e) {
e.printStackTrace();
}
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
Date date = (Date)formatter.parse("12-December-2012");
long mills = date.getTime();
Sudah waktunya seseorang memberikan jawaban modern untuk pertanyaan ini. Pada tahun 2012 ketika pertanyaan diajukan, jawaban yang diposting juga adalah jawaban yang baik. Mengapa jawaban yang diposting pada tahun 2016 juga menggunakan kelas yang sudah lama usang SimpleDateFormat
dan Date
sedikit lebih menjadi misteri bagi saya. java.time
, API tanggal dan waktu Java modern juga dikenal sebagai JSR-310, jauh lebih baik untuk digunakan. Anda dapat menggunakannya di Android melalui ThreeTenABP, lihat pertanyaan ini: Bagaimana menggunakan ThreeTenABP di Proyek Android .
Untuk sebagian besar tujuan, saya sarankan menggunakan milidetik sejak periode awal hari di UTC . Untuk mendapatkan ini:
DateTimeFormatter dateFormatter
= DateTimeFormatter.ofPattern("d-MMMM-uuuu", Locale.ENGLISH);
String stringDate = "12-December-2012";
long millisecondsSinceEpoch = LocalDate.parse(stringDate, dateFormatter)
.atStartOfDay(ZoneOffset.UTC)
.toInstant()
.toEpochMilli();
System.out.println(millisecondsSinceEpoch);
Ini mencetak:
1355270400000
Jika Anda memerlukan waktu di awal hari di beberapa zona waktu tertentu, tentukan zona waktu tersebut, bukan UTC, misalnya:
.atStartOfDay(ZoneId.of("Asia/Karachi"))
Seperti yang diharapkan, ini memberikan hasil yang sedikit berbeda:
1355252400000
Hal lain yang perlu diperhatikan, ingatlah untuk menyediakan lokal ke DateTimeFormatter
. Saya menganggap bulan Desember sebagai bahasa Inggris, ada bahasa lain yang bulan itu disebut sama, jadi silakan pilih sendiri lokasi yang tepat. Jika Anda tidak memberikan lokal, pemformat akan menggunakan pengaturan lokal JVM, yang dapat bekerja dalam banyak kasus, dan kemudian tiba-tiba gagal suatu hari ketika Anda menjalankan aplikasi Anda pada perangkat dengan pengaturan lokal yang berbeda.
Lihatlah SimpleDateFormat
kelas yang dapat mengurai String
dan mengembalikan a Date
dan getTime
metode Date
kelas.
java.util.Date
menggunakan formatter tanggalCara termudah digunakan Date Using Date () dan getTime ()
Date dte=new Date();
long milliSeconds = dte.getTime();
String strLong = Long.toString(milliSeconds);
System.out.println(milliSeconds)
menggunakan format sederhana Anda dapat dengan mudah mencapainya.
1) Pertama konversikan string ke java.Date menggunakan simpledateformatter.
2) Gunakan metode getTime untuk mendapatkan hitungan milidetik dari tanggal
public class test {
public static void main(String[] args) {
String currentDate = "01-March-2016";
SimpleDateFormat f = new SimpleDateFormat("dd-MMM-yyyy");
Date parseDate = f.parse(currentDate);
long milliseconds = parseDate.getTime();
}
}
lebih banyak Contoh klik di sini
Coba kode di bawah ini
SimpleDateFormat f = new SimpleDateFormat("your_string_format", Locale.getDefault());
Date d = null;
try {
d = f.parse(date);
} catch (ParseException e) {
e.printStackTrace();
}
long timeInMillis = d.getTime();