Instant Java, một thời điểm cụ thể

Instant class thuộc java.time package đại diện cho một thời điểm cụ thể trên dòng thời gian. Giá trị của Instant được đếm từ thời điểm mốc 1970/01/01 (1970–01-01T00:00:00Z) hay còn gọi là EPOCH.

Instant thường được dùng để ghi vết lại một sự kiện trong ứng dụng.

Khởi tạo một Instant

Để khởi tạo một Instant instance đại diện cho thời điện hiện tại chúng ta gọi Instant.now().

Instant now = Instant.now();

Các method trong instant class

now()

now() method trả về Instant tại thời điểm hiện tại từ UTC clock.

// Syntax
public static Instant now()


// Example
// create an Instant object
Instant lt = Instant.now();

// print result
System.out.println("Instant : " + lt); // Instant : 2019-12-31T12:14:48.109Z

now(Clock clock)

Trả về Instant ở thời điểm hiện tại của đồng hồ được chỉ định trong tham số truyền vào.

// Syntax
public static Instant now(Clock clock)


//Example

// create a clock
Clock cl = Clock.systemDefaultZone();

// create an Instant object using now(Clock)
Instant lt = Instant.now(cl);

// print result
System.out.println("Instant : " + lt); // Instant : 2019-12-31T12:31:30.281Z

with(TemporalAdjuster adjuster)

Trả về một bản sao của một Instant với giá trị adjuster mới.

// Syntax
default Temporal with(TemporalAdjuster adjuster)


// Example

Instant local = Instant.parse("2019-12-31T10:33:50.63Z");

System.out.println("Instant before" + " adjustment: " + local); // Instant before adjustment: 2019-12-31T10:33:50.630Z

Instant updatedlocal = local.with(Instant.EPOCH);

System.out.println("Instant after" + " adjustment: " + updatedlocal); // Instant after adjustment: 1970-01-01T00:00:00Z

 with(TemporalField field, long newValue)

Method này trả về một bản sao của Instant với giá trị của từng field được cập nhập với newValue. Chúng ta có thể thay đôi gía trị của ngày, tháng năm, giờ, phút, giây etc của Instant ban đầu.

// Syntax
public Instant with(TemporalField field, long newValue)

// Example 

public static void main(String[] args) {

Instant instant = Instant.parse("2019-12-31T10:15:30.00Z");
System.out.println("Origin: " + instant); // Origin: 2019-12-31T10:15:30Z
System.out.println(instant.with(ChronoField.NANO_OF_SECOND, 20)); // 2019-12-31T10:15:30.000000020Z

until(Temporal endExclusive, TemporalUnit unit)

until method được sử dụng để tính toán khoản thời gian giữa 2 Instant theo đơn vị unit như giây, giờ, phút etc.

// Syntax
public long until(Temporal endExclusive, TemporalUnit unit)


// Example

// create Instant objects
Instant instant1 = Instant.parse("2019-01-03T19:35:50.00Z");
Instant instant2 = Instant.parse("2020-01-04T13:18:59.00Z");

// apply until method of Instant class
long result = instant1.until(instant2, ChronoUnit.MINUTES);

// print results
System.out.println("Result in Minutes: " + result); // 526663

ofEpochSecond(long epochSecond)

Khởi tạo một Instant từ số giây epochSecond được truyền vào làm tham số. Lấy mốc thời gian là 1970-01-01T00:00:00Z.

// Syntax
public static Instant ofEpochSecond(long epochSecond)

// Example 
// 70 second = 1p10s
Instant instant = Instant.ofEpochSecond(70);
System.out.println("Intant: " + instant); // Intant: 1970-01-01T00:01:10Z

ofEpochSecond(long epochSecond, long nanoAdjustment)

Khởi tạo một Instant từ số giây epochSecond và nanoAdjustment mili giây được truyền vào làm tham số. Lấy mốc thời gian là 1970-01-01T00:00:00Z. 

// Syntax 
public static Instant ofEpochSecond(long epochSecond, long nanoAdjustment)

// Example
Instant instant = Instant.ofEpochSecond(70, 99999999);
System.out.println("Intant: " + instant); // Intant: 1970-01-01T00:01:10.099999999Z

plus(long amountToAdd, TemporalUnit unit)

Trả về một bản sao chép của Instant với thời gian được cộng thêm một khoảng amountToAdd (đơn vị unit: second, days, etc).

// Syntax
public Instant plus(long amountToAdd, TemporalUnit unit)

//Example
Instant instant = Instant.parse("2019-12-30T19:34:50.63Z");

Instant value = instant.plus(30, ChronoUnit.DAYS);

System.out.println("Instant after adding 30 DAYS: " + value); // Instant after adding 30 DAYS: 2020-01-29T19:34:50.630Z

plus(TemporalAmountT amountToAdd)

Trả về một bản sao chép của Instant với thời gian được cộng thêm một khoảng date-time amountToAdd. amountToAdd thông thường là Period hoặc Duration hoặc bất cứ class nào implement TemporalAmount interface.

// syntax
public Instant plus(TemporalAmount amountToAdd)

// Example
// create a Instant object
Instant inst = Instant.parse("2020-12-30T19:34:50.63Z");

// add 20 Days to Instant
Instant value = inst.plus(Period.ofDays(20));

// print result
System.out.println("Instant after adding Days: " + value); // Instant after adding Days: 2021-01-19T19:34:50.630Z

minus(long amountToSubtract, TemporalUnit unit)

Trả về một bản sao chép của Instant với thời gian được trừ đi một khoảng amountToAdd (đơn vị unit: second, days, etc).

// Syntax
public Instant minus(long amountToSubtract, TemporalUnit unit)

// Example
Instant instant = Instant.now();

Instant value = instant.minus(20, ChronoUnit.DAYS);

System.out.println("Instant after subtracting DAYS: " + value); // Instant after subtracting DAYS: 2019-12-12T08:48:55.135Z

minus(TemporalAmount amountTosubtract)

Trả về một bản sao chép của Instant với thời gian được trừ đi một khoảng date-time amountToAdd. amountToAdd thông thường là Period hoặc Duration hoặc bất cứ class nào implement TemporalAmount interface.

// Syntax
public Instant minus(TemporalAmount amountTosubtract)


// Example
Instant instant = Instant.now();
Instant value = instant.minus(Period.ofDays(20));
System.out.println("Instant after subtracting DAYS: " + value); // Instant after subtracting DAYS: 2019-12-12T08:51:59.030Z

truncatedTo(TemporalUnit unit)

Lượt bỏ các phần giá trị đến đơn vị unit, Ví dụ nếu Instant của bạn đang là 2020-01-01T09:07:02.819Z, truncatedTo ChronoUnit.HOURS thì kết quả là 2020-01-01T09:00:00Z

//Syntax
public Instant truncatedTo(TemporalUnit unit)

// Example
System.out.println(Instant.now().truncatedTo(ChronoUnit.HOURS)); // 2020-01-01T09:00:00Z

parse(CharSequence text)

Trả về một Instant từ chuỗi text truyền vào. 

// Syntax
public static Instant parse(final CharSequence text)

// Example
Instant instant = Instant.parse("2019-12-12T08:51:59.030Z");
System.out.println("Instant: " + instant); // 2019-12-12T08:51:59.030Z

ofEpochMilli(long epochMilli)

ofEpochMili() trả về một instance Instant có gía trị bằng với số milisecond được truyền vào.

// Syntax
public static Instant ofEpochMilli(long epochMilli)

// Example

long milliseconds = 999999999;

Instant instant = Instant.ofEpochMilli(milliseconds);

System.out.println("Instant: " + instant); // Instant: 1970-01-12T13:46:39.999Z

plusSeconds(long secondsToAdd)

plusSeconds() trả về một instance Instant với giá trị được cộng thêm số giây secondToAdd được truyền vào.

// Syntax
public Instant plusSeconds(long secondsToAdd)

// Example
// addition of 84000 seconds to this instant
Instant instant = Instant.now().plusSeconds(84000);

System.out.println("Returned Instant: " + instant); // Returned Instant: 2020-01-04T14:47:02.883Z

minusSeconds(long secondsToSubtract)

minusSeconds() trả về một instance Instant với giá trị bị trừ đi số giây secondToSubtract được truyền vào.

// Syntax
public Instant minusSeconds(long secondsToSubtract)


// Example
Instant instant = Instant.now().minusSeconds(84000);

System.out.println("Returned Instant: " + instant); // Returned Instant: 2020-01-03T05:18:07.952Z

toString()

Trả về chuỗi đại diện cho một Instant định dạng ISO-8601.

// Syntax
public String toString()

// Example
Instant instant = Instant.now();
System.out.println(instant.toString()); // 2020-01-03T15:30:53.562Z

rang(TemporalField field)

Trả về ValueRang chứa giá trị lớn nhất và nhỏ nhất của field truyền vào. Method này hữu ích cho chúng ta biết được chính xác khoảng giới hạn nằm ở đâu để tránh truyền dữ liệu không đúng.

// Syntax
public ValueRange range(TemporalField field)

// Example

// get range of MILLI_OF_SECOND field
ValueRange range = Instant.now().range(ChronoField.MILLI_OF_SECOND);

// print range of MILLI_OF_SECOND
System.out.println("Range of MILLI_OF_SECOND: " + range);

plusMillis(long millis)

Trả về một bản sao chép của Instant với thời gian được cộng thêm một khoảng milli giây từ tham số đầu vào.

// Syntax
public Instant plusMillis(long millisToAdd)

// Example

Instant instant = Instant.parse("2020-01-03T16:24:02.299Z");
System.out.println(instant.plusMillis(8800000)); //2020-01-03T18:50:42.299Z

minusMillis(long millisToSubtract)

Trả về một bản sao chép của Instant với thời gian bị trừ đi một khoảng milli giây từ tham số đầu vào.

// Syntax
public Instant minusMillis(long millisToSubtract)

// Example
Instant instant = Instant.parse("2020-01-03T16:24:02.299Z");
System.out.println(instant.minusMillis(8800000)); //2020-01-03T13:57:22.299Z

plusNanos(long nanoToAdd)

Trả về một bản sao chép của Instant với thời gian được cộng thêm một khoảng nano giây từ tham số đầu vào.

// Syntax
public Instant plusNanos(long nanosToAdd)

// Example
Instant instant = Instant.parse("2020-01-03T16:24:02.299Z");
System.out.println(instant.plusNanos(8800000)); //2020-01-03T16:24:02.307800Z

minusNanos(long nanosToSubtract)

Trả về một bản sao chép của Instant với thời gian bị trừ đi một khoảng nano giây từ tham số đầu vào.

Syntax
public Instant minusNanos(long nanosToSubtract)

// Example
Instant instant = Instant.parse("2020-01-03T16:24:02.299Z");
System.out.println(instant.minusNanos(8800000)); //2020-01-03T16:24:02.290200Z

get(TemporalField field)

Trả về giá trị tại field được chỉ định trong tham số truyền vào.

// Syntax
public int get(TemporalField field)

// Example
Instant instant = Instant.parse("2020-01-03T16:24:02.299Z");
System.out.println(instant.get(ChronoField.MILLI_OF_SECOND)); // 299

from(TemporalAccessor temporal)

Khởi tạo một Instant từ temporal.

// Syntax
public static Instant from(TemporalAccessor temporal)

// Example
ZonedDateTime zonedDateTime = ZonedDateTime.now();

System.out.println("ZonedDateTime: " + zonedDateTime); // ZonedDateTime: 2020-01-04T00:00:51.261+07:00[Asia/Ho_Chi_Minh]

Instant result = Instant.from(zonedDateTime);

System.out.println("Instant: " + result); // Instant: 2020-01-03T17:00:51.261Z

isBefore(Instant otherInstant)

isBefore() kiểm tra khoảng thời gian của Instant hiện tại có nằm trước khoảng thời gian của Instant otherInstant từ tham số đầu vào.

// Syntax
public boolean isBefore(Instant otherInstant)

//Example

Instant instant1 = Instant.now();

Instant instant2 = Instant.now().plusMillis(1000);

Instant instant3 = Instant.now().minusMillis(1000);

System.out.println(instant1.isBefore(instant2)); // true

System.out.println(instant1.isBefore(instant3)); // false

System.out.println(instant1.isBefore(instant1)); // false

isAfter(Instant otherInstant)

isBefore() kiểm tra khoảng thời gian của Instant hiện tại có nằm sau khoảng thời gian của Instant otherInstant từ tham số đầu vào.

// Syntax
public boolean isAfter(Instant otherInstant)

//Example

Instant instant1 = Instant.now();

Instant instant2 = Instant.now().plusMillis(1000);

Instant instant3 = Instant.now().minusMillis(1000);

System.out.println(instant1.isAfter(instant2)); // false

System.out.println(instant1.isAfter(instant3)); // true

System.out.println(instant1.isAfter(instant1)); // false

equals(Instant other)

Trả về true nếu Instant hiện tại bằng với Instant other từ tham số truyền vào. 

// Syntax
public boolean equals(Object otherInstant)


// Example
Instant instant1 = Instant.parse("2020-01-04T05:10:57.392Z");

Instant instant2 = Instant.parse("2020-01-04T05:10:50.392Z");

Instant instant3 = Instant.parse("2020-01-04T05:10:57.392Z");

System.out.println(instant1.equals(instant2)); // false

System.out.println(instant1.equals(instant3)); // true

compareTo(Instant other)

So sánh 2 Instant với nhau. Trả về giá trị âm nếu Instant hiện tại bé hơn Instant other, 0 nếu bằng nhau và dương nếu lớn hơn

// Syntax
public int compareTo(Instant otherInstant)

// Example
Instant instant1 = Instant.parse("2020-01-04T05:10:57.392Z");

Instant instant2 = Instant.parse("2020-01-04T05:10:50.392Z");

Instant instant3 = Instant.parse("2020-01-04T05:10:57.392Z");

System.out.println(instant1.compareTo(instant2)); // 1

System.out.println(instant1.compareTo(instant3)); // 0

System.out.println(instant2.compareTo(instant3)); // -1

toEpochMilli()

Convert Instant sang milli giây. 

//Syntax
public long toEpochMilli()

// Example
Instant instant = Instant.now();
System.out.println(instant.toEpochMilli()); // 1578110000124

getNano()

Trả về phần giá trị nano của Instant

// Syntax
public int getNano()

//Example

// create a Instant object 
Instant instant = Instant.parse("2018-12-30T19:34:50.63Z"); 

int value = instant.getNano(); 
  
System.out.println("nanoseconds value: "+ value); // nanoseconds value: 630000000

getEpochSecond()

Tính tổng số giây từ Instant mặc định “1970-01-01T00:00:00Z” đến Instant hiện tại.

// Syntax
public long getEpochSecond()

// Example
Instant instant = Instant.parse("2020-01-04T05:10:57.392Z");

System.out.println(instant.getEpochSecond()); // 1578114657
0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x