Làm thế nào để chuyển đổi một chuỗi Ngày thành dài millseconds


Câu trả lời:


154

Sử dụng 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();
}

16
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
Date date = (Date)formatter.parse("12-December-2012");
long mills = date.getTime();

11

Đã đến lúc ai đó cung cấp câu trả lời hiện đại cho câu hỏi này. Vào năm 2012 khi câu hỏi được đưa ra, các câu trả lời cũng được đăng lại sau đó là những câu trả lời tốt. Tại sao các câu trả lời được đăng vào năm 2016 cũng sử dụng các lớp đã lỗi thời từ lâu SimpleDateFormatDateđối với tôi là một điều bí ẩn hơn một chút. java.time, API ngày và giờ Java hiện đại còn được gọi là JSR-310, rất dễ làm việc với nó. Bạn có thể sử dụng nó trên Android thông qua ThreeTenABP, hãy xem câu hỏi này: Cách sử dụng ThreeTenABP trong Android Project .

Đối với hầu hết các mục đích, tôi khuyên bạn nên sử dụng mili giây kể từ kỷ nguyên đầu ngày theo giờ UTC . Để có được những thứ này:

    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);

Bản in này:

1355270400000

Nếu bạn yêu cầu thời gian vào đầu ngày ở một số múi giờ cụ thể, hãy chỉ định múi giờ đó thay vì UTC, ví dụ:

            .atStartOfDay(ZoneId.of("Asia/Karachi"))

Như mong đợi, điều này cho một kết quả hơi khác:

1355252400000

Một điểm khác cần lưu ý, hãy nhớ cung cấp ngôn ngữ cho bạn DateTimeFormatter. Tôi lấy tháng 12 là tiếng Anh, có những ngôn ngữ khác mà tháng đó được gọi là giống nhau, vì vậy hãy tự mình chọn ngôn ngữ phù hợp. Nếu bạn không cung cấp ngôn ngữ, trình định dạng sẽ sử dụng cài đặt ngôn ngữ của JVM, cài đặt này có thể hoạt động trong nhiều trường hợp và sau đó bất ngờ bị lỗi vào một ngày nào đó khi bạn chạy ứng dụng của mình trên một thiết bị có cài đặt ngôn ngữ khác.


9

Hãy xem SimpleDateFormatlớp có thể phân tích cú pháp a Stringvà trả về a DategetTimephương thức của Datelớp.



3

bạn có thể sử dụng simpleDateFormat để phân tích cú pháp chuỗi ngày tháng.


1

Cách dễ nhất là sử dụng Ngày sử dụng Ngày () và getTime ()

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

1

bằng cách sử dụng định dạng đơn giản, bạn có thể dễ dàng đạt được nó.

1) Đầu tiên chuyển đổi chuỗi thành java.Date bằng cách sử dụng simpledateformatter.

2) Sử dụng phương thức getTime để có được số mili giây kể từ ngày

 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();
  }
        }

thêm Ví dụ bấm vào đây


0

Hãy thử mã bên dưới

        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();
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.