Date, SimpleDateFormat, LoaclDate - Yash-777/MyWorld GitHub Wiki

Learn Java Date wiki, OS Date samples


DATE: From List of Products, Find the most recent Sale product item info
public class DatesTest {
    static String[] datePatterns = {
            "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "yyyy-MM-dd'T'HH:mm:ss"
    };
    public static void main(String[] args) throws ParseException {
        String dateStr = "2019-07-25T18:00:00.000Z";
        Date parseDate = parseDate(dateStr, datePatterns[0]);
        System.out.println("Date :"+parseDate);
        
        System.out.println("LocalDate: "+getLocalDate(parseDate));
        System.out.println("OffsetDateTime: "+getOffsetDateTime(parseDate));
        
        
        List<Product> productList = Arrays.asList(
            getProduct(1, 100, "Product 1", "2019-07-25T18:00:00.000Z", "2019-01-01T00:00:00.000Z"),
            getProduct(2, 200, "Product 2", "2021-05-10T10:00:00.000Z", "2022-03-15T00:00:00.000Z"),
            getProduct(3, 150, "Product 3", "2022-09-05T08:00:00.000Z", "2021-11-30T00:00:00.000Z"),
            getProduct(4, 300, "Product 4", "2022-09-05T07:00:00.000Z", "2022-03-16T00:00:00.000Z")
                );
        // Find the most recent sale date
        String mostRecentSaleDate = productList.stream()
                .map(Product::getSaleDate)
                .max(Comparator.naturalOrder()).orElse(null);
        System.out.println("Most Recent Sale Date: " + mostRecentSaleDate);
        // Find the most recent manufactured date
        Date mostRecentManufacturedDate = productList.stream()
                .map(Product::getManufacturedDate)
                .max(Comparator.naturalOrder()).orElse(null);
        System.out.println("Most Recent Manufactured Date: " + mostRecentManufacturedDate);
        
        // Find the most recent Sale product item info
        Product mostRecentSaledProduct = productList.stream()
                .max(Comparator.comparing(p -> parseDate(p.getSaleDate(), datePatterns[0]) )).orElse(null);
        System.out.println("Most Recent Sale: " + mostRecentSaledProduct);
        // Find the most recent manufactured product item info
        Product mostRecentManufacturedProduct = productList.stream()
                .max(Comparator.comparing(Product::getManufacturedDate)).orElse(null);
        System.out.println("Most Recent Manufactured: " + mostRecentManufacturedProduct);
        
        Product mostRecentManufacturedProductOffset = productList.stream()
                .max(Comparator.comparing(Product::getOffsetDateTime)).orElse(null);
        System.out.println("Most Recent Manufactured OffsetDateTime: " + mostRecentManufacturedProductOffset);
        
    }
    public static Product getProduct(int id, int price, String name, String saleDate, String mnfDate) {
        Date parseDate = parseDate(mnfDate, datePatterns[0]);
        return Product.builder().id(id).price(price)
                .name(name).saleDate(saleDate)
                .manufacturedDate( parseDate )
                .localDate( getLocalDate(parseDate) )
                .offsetDateTime( getOffsetDateTime(parseDate) )
                .build();
    }
    public static Date parseDate(String dateStr, String datePattern) {
        try {
            // Create a SimpleDateFormat object with the desired date format
            DateFormat dateFormat = new SimpleDateFormat( datePattern );
            // Parse the string date to obtain a Date object
            Date date = dateFormat.parse(dateStr);
            return date;
        } catch (ParseException e) {
            e.printStackTrace();
            return null;
        }
    }
    static ZoneId defaultZone = ZoneId.systemDefault(); // ZoneId.of("UTC");
    public static LocalDate getLocalDate(Date dateTime) {
        return dateTime.toInstant().atZone( defaultZone ).toLocalDate();
    }
    public static LocalDateTime getLocalDateTime(Date dateTime) {
        return dateTime.toInstant().atZone( defaultZone ).toLocalDateTime();
    }
    public static OffsetDateTime getOffsetDateTime(Date dateTime) {
        LocalDateTime localDateTime = getLocalDateTime(dateTime);
        ZoneOffset offset = defaultZone.getRules().getOffset( localDateTime );
        //return dateTime.toInstant().atOffset(offset);
        return OffsetDateTime.of(localDateTime, offset);
    }
}
@Data @Builder
class Product {
    int id, price;
    String name, saleDate;
    java.util.Date manufacturedDate;
    java.time.LocalDate localDate;
    java.time.OffsetDateTime offsetDateTime;
}

⚠️ **GitHub.com Fallback** ⚠️