Cara mengonversi Tanggal string menjadi mil detik panjang

88

Saya memiliki tanggal di dalam string, seperti "12-Desember-2012". Bagaimana cara mengubahnya menjadi milidetik (panjang)?

Dawood Ahmed
sumber

Jawaban:

154

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();
}
Jon Lin
sumber
17
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
Date date = (Date)formatter.parse("12-December-2012");
long mills = date.getTime();
Ram kiran
sumber
11

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 SimpleDateFormatdan Datesedikit 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.

Ole VV
sumber
9

Lihatlah SimpleDateFormatkelas yang dapat mengurai Stringdan mengembalikan a Datedan getTimemetode Datekelas.

Averroes
sumber
7
  • Pertama, konversikan string ke java.util.Datemenggunakan formatter tanggal
  • Gunakan getTime () untuk mendapatkan hitungan milidetik sejak tanggal
Dmitriy Tarasov
sumber
3

Anda bisa menggunakan simpleDateFormat untuk mengurai tanggal string.

XepterX
sumber
1

Cara termudah digunakan Date Using Date () dan getTime ()

    Date dte=new Date();
    long milliSeconds = dte.getTime();
    String strLong = Long.toString(milliSeconds);
    System.out.println(milliSeconds)
Saranga kapilarathna
sumber
1

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

Ankit jain
sumber
0

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();
subrahmanyam boyapati
sumber