JShell เป็น command-line tool แบบโต้ตอบ เรียน ตรวจสอบ สำรวจภาษา Java และ API ได้ พิมพ์โค้ด Java ที่ถูกต้องใดๆ เข้า console ได้ผลทันที ไม่ต้องเขียน verbose class พร้อม main() method
ตัวอย่าง: ดูวันที่และเวลาปัจจุบัน
C:\Users\User>jshell
| Welcome to JShell -- Version 9.0.4
| For an introduction type: /help intro
jshell> new Date()
$1 ==> Fri Feb 28 11:59:23 IST 2020
ตัวอย่าง: ดู milliseconds จาก epoch
jshell> new Date().getTime()
$2 ==> 1582871487654
jshell> System.currentTimeMillis()
$3 ==> 1582871513421
jshell> new Date(1582871513421L)
$4 ==> Fri Feb 28 12:01:53 IST 2020
ตัวอย่าง: ใช้ java.time API (Modern)
jshell> java.time.Instant.now()
$5 ==> 2020-02-28T07:07:33.941720100Z
jshell> java.time.LocalDate.now()
$6 ==> 2020-02-28
jshell> java.time.LocalTime.now()
$7 ==> 12:07:33.941720100
jshell> java.time.LocalDateTime.now()
$8 ==> 2020-02-28T12:07:33.941720100
jshell> java.time.ZonedDateTime.now()
$9 ==> 2020-02-28T12:07:33.941720100+05:30[Asia/Kolkata]
สรุป Date/Time APIs ใน JShell
| Class | คำอธิบาย | ตัวอย่าง |
|---|---|---|
| java.util.Date | Legacy date/time (mutable) | new Date() |
| java.time.Instant | UTC timestamp (immutable) | Instant.now() |
| java.time.LocalDate | วันที่โดยไม่มีเวลา/โซน | LocalDate.now() |
| java.time.LocalTime | เวลาโดยไม่มีวันที่/โซน | LocalTime.now() |
| java.time.LocalDateTime | วันที่+เวลา ไม่มีโซน | LocalDateTime.now() |
| java.time.ZonedDateTime | วันที่+เวลา+โซนเวลา | ZonedDateTime.now() |
| java.time.OffsetDateTime | วันที่+เวลา+offset | OffsetDateTime.now() |
แนะนำใช้ java.time package (JSR-310) ซึ่งเป็น modern API immutable และ thread-safe