Chuyển đổi ngày giờ số nguyên thành ngày giờ thực sự cố? JAVA [trùng lặp]

Aug 17 2020

vì vậy tôi gặp sự cố này khi chuyển đổi định dạng DateTime số nguyên sang định dạng DateTime bình thường trong Java. Tôi có biến này int DateTime, ví dụ nó là: "/ Date (1484956800000) /". Và tôi đang cố chuyển nó thành ngày giờ bình thường và hiển thị nó ra màn hình ...

Tôi đã thử như thế này ..

   String dateAsText = new SimpleDateFormat("MM-dd HH:mm")
                .format(new Date(Integer.parseInt(deals.getDate_time())  * 1000L));

// setting my textView with the string dateAsText
       holder.Time.setText(dateAsText);

Trả lời

1 LiveandLetLive Aug 17 2020 at 15:08

Tôi khuyên bạn nên ngừng sử dụng java.utilAPI ngày-giờ lỗi thời và dễ xảy ra lỗi và SimpleDateFormat. Chuyển sang API ngày-giờ hiện đại java.time và API định dạng tương ứng ( java.time.format). Tìm hiểu thêm về API ngày-giờ hiện đại từ Trail: Date Time .

import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;

public class Main {
    public static void main(String[] args) {
        // Obtain an instance of Instant using milliseconds from the epoch of
        // 1970-01-01T00:00:00Z
        Instant instant = Instant.ofEpochMilli(1484956800000L);
        System.out.println(instant);

        // Specify the time-zone
        ZoneId myTimeZone = ZoneId.of("Europe/London");

        // Obtain ZonedDateTime out of Instant
        ZonedDateTime zdt = instant.atZone(myTimeZone);

        // Obtain LocalDateTime out of ZonedDateTime
        // Note that LocalDateTime throws away the important information of time-zone
        LocalDateTime ldt = zdt.toLocalDateTime();
        System.out.println(ldt);

        // Custom format
        String dateAsText = ldt.format(DateTimeFormatter.ofPattern("MM-dd HH:mm"));
        System.out.println(dateAsText);
    }
}

Đầu ra:

2017-01-21T00:00:00Z
2017-01-21T00:00
01-21 00:00

Nếu bạn vẫn muốn sử dụng kế thừa được thiết kế kém java.util.Date, bạn có thể làm như sau:

import java.text.SimpleDateFormat;
import java.util.Date;

public class Main {
    public static void main(String[] args) {
        Date date = new Date(1484956800000L);
        System.out.println(date);

        // Custom format
        String dateAsText = new SimpleDateFormat("MM-dd HH:mm").format(date);
        System.out.println(dateAsText);
    }
}

Đầu ra:

Sat Jan 21 00:00:00 GMT 2017
01-21 00:00