Thursday, August 15, 2019

Java 8 MinguoDate API Examples

1. Overview


In this tutorial, We'll be learning MinguoDate introduced in Java 8. The MinguoDate class is immutable and thread-safe. So, it can be used in multithreaded applications without explicit synchronization.

This date operates using the Minguo calendar. This calendar system is primarily used in the Republic of China, often known as Taiwan. Dates are aligned such that 0001-01-01 (Minguo) is 1912-01-01 (ISO).

Below is the class MinguoDate internal declaration in API source code.

public final class MinguoDate
extends Object
implements ChronoLocalDate, Serializable


Now, We'll see the example programs to convert localdate to MinguoDate and from MinguoDate to local date.



2. Example to convert local date to MinguoDate


To convert the current date to the Minguo date just subtracts the current year with number 1911, for
example 2019 (ISO) - 1911 = 108 (Minguo ROC)


package com.java.w3schools.blog.java8.date.time.api;

import java.time.LocalDate;
import java.time.chrono.MinguoDate;

/**
 * Example to convert local date to MinguoDate
 * 
 * @author venkatesh
 *
 */
public class MinguoDateToLocalDateExample {

 public static void main(String[] args) {

  LocalDate localDate = LocalDate.of(2025, 5, 7);
  MinguoDate minguo = MinguoDate.from(localDate);
  System.out.println("LocalDate 1: " + localDate); // 2025-05-07
  System.out.println("MinguoDate 1: " + minguo); // 114-05-07

  LocalDate localDate2 = LocalDate.of(2030, 5, 7);
  MinguoDate minguo2 = MinguoDate.from(localDate2);
  System.out.println("LocalDate 2: " + localDate2); // 2025-05-07
  System.out.println("MinguoDate 2: " + minguo2); // 114-05-07

 }

}

Output:

LocalDate 1: 2025-05-07
MinguoDate 1: Minguo ROC 114-05-07
LocalDate 2: 2030-05-07
MinguoDate 2: Minguo ROC 119-05-07

3. Example to convert MinguoDate to localdate


package com.java.w3schools.blog.java8.date.time.api;

import java.time.LocalDate;
import java.time.chrono.MinguoDate;

/**
 * Example to convert local date to MinguoDate
 * 
 * @author venkateshn
 *
 */
public class LocalDateToMinguoDateExample {

 public static void main(String[] args) {

  System.out.println("Example One");
  MinguoDate minguo1 = MinguoDate.of(108, 7, 15);
  // LocalDate localDate = LocalDate.ofEpochDay(minguo2.toEpochDay());
  LocalDate localDate1 = LocalDate.from(minguo1);
  System.out.println("MinguoDate 1: " + minguo1); // 108-07-15
  System.out.println("LocalDate 1: " + localDate1); // 2019-07-15

  System.out.println("\nExample Two");
  MinguoDate minguo2 = MinguoDate.of(108, 7, 15);
  // LocalDate localDate = LocalDate.ofEpochDay(minguo2.toEpochDay());
  LocalDate localDate2 = LocalDate.from(minguo2);
  System.out.println("MinguoDate 2: " + minguo2); // 108-07-15
  System.out.println("LocalDate 2: " + localDate2); // 2019-07-15

 }
}

Output:

Example One
MinguoDate 1: Minguo ROC 108-07-15
LocalDate 1: 2019-07-15

Example Two
MinguoDate 2: Minguo ROC 108-07-15
LocalDate 2: 2019-07-15

4. MinguoDate API methods


Few MinguoDate API methods with examples.

now(): Obtains the current MinguoDate from the system clock in the default time-zone.
minus(long amountToAdd, TemporalUnit unit): Returns an object of the same type as this object with an amount subtracted.
plus(long amountToAdd, TemporalUnit unit): Returns an object of the same type as this object with an amount added.
with(TemporalAdjuster adjuster): Returns an adjusted object of the same type as this object with the adjustment made.

Full article on "java 8 TemporalAdjusters"

Example:

/**
 * 
 * MinguoDate now(), minus(), plus(), with() methods
 * 
 * @author venkateshn
 *
 */
public class MinguoDateExample {

 public static void main(String[] args) {

  LocalDate localDate = LocalDate.now();
  System.out.println("Local Date : " + localDate);

  MinguoDate minguoDate = MinguoDate.now();
  System.out.println("Current MinguoDate : " + minguoDate);

  MinguoDate minusDate = minguoDate.minus(10, ChronoUnit.DAYS);
  System.out.println("Minus 10 days date : " + minusDate);

  MinguoDate plusDate = minguoDate.plus(10, ChronoUnit.DAYS);
  System.out.println("Plus 10 days date : " + plusDate);

  MinguoDate firstDayOfNextMonth = minguoDate.with(TemporalAdjusters.firstDayOfNextMonth());
  System.out.println("First day of next month date : " + firstDayOfNextMonth);

 }

}

Output:

Local Date : 2019-08-15
Current MinguoDate : Minguo ROC 108-08-15
Minus 10 days date : Minguo ROC 108-08-05
Plus 10 days date : Minguo ROC 108-08-25
First day of next month date : Minguo ROC 108-09-01


5. Conclusion


In this post, We've seen how to use MinguoDate API.

Shown examples on to convert LocalDate to MinguoDate and MinguoDate to LocalDate.

API useful methods to manipuylate with date (now(), minus(), plus(), with()).

GitHub
MinguoDate API Ref



No comments:

Post a Comment