การใช้ java.util.Date
รู้จัก และใช้ java.util.Date กับ method ต่าง ๆ
Date เป็นคลาส หนึ่ง ในคลาสมาตรฐานของ java ซึ่งอยู่ใน java.util.DateDate ก็คือเวลา ดังนั้น ในคลาสนี้จึงเป็นคลาสที่จัดการเกี่ยวกับเวลา
ในการเขียนโปรแกรมต่าง ๆ ส่วนมาก มักมีวันที่มาเกี่ยวข้อง ไม่ว่าจะเป็นวันที่บันทึกข้อมูล วันที่แก้ไขข้อมูล ยิ่งโปรแกรใหญ่ ๆ ปฏิทินวันที่ ยิ่งเป็นสิ่งที่ขาดไม่ได้เลย ดังนั้นในบทความนี้ เรามาดูคลาส ซึ่งเป็นคลาสหนึ่งใน Java.util.Date ซึ่งเป็นคลาสที่จัดการเกี่ยวกับวันที่ และเวลา
สิ่งที่ควรรู้ก่อนเขียน java.util.Date และอ่านบทความ
year ในที่นี้ก็คือ ปี ลบด้วย 1900(y-1900)month ก็คือเดือน แต่จะถูกแทนด้วย 0 ถึง 11 ซึ่ง 0 ก็คือเดือนมกราคม, 1 กุมภาพันธ์ ... 11 ธันวาคม
date ซึ่งก็คือวันที่แสดงตามวันที่ปกติ นั่นคือ 1-31
hour ก็คือชั่วโมง จะถูกแทนด้วย 0-23 ดังนั้น 0 จะแทนเที่ยงคืนถึงตี 1...
minute ก็คือนาที จะแสดงตามนาทีปกติ นั่นคือ 0-59
second ก็คือวินาที จะถูกกำหนดโดย 0-61 นั่นคือ จะมีวินาทีเป็น 60 หรือ 61 นั่น ก็ต้องดูว่าเป็น leap second หรือเปล่า
Constructor ใน java.util.Date
Date() |
Date(int year,int month,int date) |
Date(int year, int month, int date, int hrs, int min) |
Date(int year, int month, int date, int hrs, int min, int sec) |
Date(long date) |
Date(String s) |
ตัวอย่างการสร้าง Object Date
import java.util.Date; public class DateIndex { public static void main(String[] args){ Date currentDate = new Date(); System.out.println(currentDate); // ตัวอย่าง output Tue Sep 04 10:09:14 ICT 2012 } }ตัวอย่างแรกเป็นตัวอย่างที่สร้าง Object Date โดยไม่มีพารามิเตอร์ นั่นคือ การสร้าง Object ที่มีค่าวันเวลา ณ ปัจจุบันที่รันนั่นเอง
import java.util.Date; public class DateIndex { public static void main(String[] args){ Date epoch = new Date(0); System.out.println(epoch ); // output Thu Jan 01 07:00:00 ICT 1970 Date increaseEpoch = new Date(1000); System.out.println(increaseEpoch); // output Thu Jan 01 07:00:01 ICT 1970 Date reduceEpoch = new Date(-1000); System.out.println(reduceEpoch); // output Thu Jan 01 06:59:59 ICT 1970 } }ตัวอย่างนี้เป็นการสร้าง Object Date ที่รับพารามิเตอร์เป็นชนิด long โดยค่าที่รับมาจะเป็นมิลลิวินาที โดยอ้างอิง(มิลลิวินาทีที่ 0)ที่ Thu Jan 01 07:00:00 ICT 1970
import java.util.Date; public class DateIndex { public static void main(String[] args){ Date assignDate = new Date(2012-1900, 8, 3); System.out.println(assignDate); // output Mon Sep 03 00:00:00 ICT 2012 Date assignDate2 = new Date(2012-1900, 8, 3, 12, 45); System.out.println(assignDate2); // output Mon Sep 03 12:45:00 ICT 1922 Date assignDate3 = new Date(2012-1900, 8, 3, 12, 45, 30); System.out.println(assignDate3); // output Mon Sep 03 12:45:30 ICT 1922 } }ตัวอย่างนี้เป็นการสร้าง Object Date ที่รับพารามิเตอร์เป็นชนิด วัน เดือน ปี เวลา หรือพูดง่าย ๆ ก็คือ เป็นการสร้างเวลา ตามเราต้องการนั่นเอง จาก constructor ใน java.util.Date และจากตัวอย่าง เราสามารถกำหนด วัน เดือน ปี หรือ วัน เดือน ปี ชั่วโมง นาที หรือ วัน เดือน ปี ชั่วโมง นาที และวินาที โดยทั้งสามรูปแบบ อันไหนไม่ถูกกำหนดก็จะมีค่าเป็น 0
จากตัวอย่างข้างบน เรากำหนดปีเป็นคริสตร์ศักราช และลบด้วย 1900 ส่วนเดือนนั้น เลข 8 ก็คือเดือน กันยายน นอกนั้นก็ตามปกติ
import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class DateIndex { public static void main(String[] args) throws ParseException{ DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); Date assignDate = df.parse("2555-09-03"); System.out.println(assignDate); // output Mon Sep 03 00:00:00 ICT 2012 } }ตัวอย่างนี้เป็นการสร้าง Object Date ที่รับค่ามาจาก Object DateFormat โดยใช้ method parse เป็นการกำหนดค่าโดยมีรูปแบบที่กำหนดไว้ โดยการใช้งานจะต้อง มีการจัดการกับ Exception ด้วยครับ ซึ่ง DateFormat เดี๋ยวผมจะมาอธิบายคลาสนี้ในคราวหลังครับ
ตัวอย่างการใช้งาน method ของ Object Date
import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class DateIndex { public static void main(String[] args) throws ParseException{ DateFormat df = new SimpleDateFormat ("yyyy-MM-dd"); Date d1 = df.parse("2555-01-01"); Date d2 = df.parse("2555-01-02"); String relation = null; if (d1.equals(d2)) relation = "the same date as"; else if (d1.before(d2)) relation = "before"; else if (d1.after(d2)) relation = "after"; System.out.println(d1 + " is " + relation + " " + d2); } }ตัวอย่างนี้ เป็นการสร้าง Object Date สองตัวแล้วนำมาเปรียบเทียบว่า วันแรก เท่ากับ ก่อน หรือหลัง วันที่สอง โดยใช้ method equals ในการตรวจสอบว่าเท่ากันหรือเปล่า ใช้ method before ในการตรวจสอบว่าเป็นวันเวลาก่อนหรือเปล่า ใช้ method after ในการตรวจสอบว่าเป็นวันหลังหรือเปล่า
import java.util.Date; public class DateIndex { public static void main(String[] args){ Date epoch = new Date(2012-1900, 8, 1); Date today = new Date(2012-1900, 8, 4); long diff = today.getTime() - epoch.getTime(); System.out.println("ทั้งสองวันแตกต่างกัน " + (diff / (1000*60*60*24)) + " วัน"); // output ทั้งสองวันแตกต่างกัน 3 วัน } }ตัวอย่างนี้ เป็นการสร้าง Object Date สองตัวแล้วนำมาเปรียบเทียบว่า Object ทั้งสองแตกต่างกันกี่วัน โดยใช้ฟังก์ชัน getTime ซึ่ง method นี้จะคืนค่าเป็น มิลลิวินาทีเมื่อเทียบกับ Thu Jan 01 07:00:00 ICT 1970
import java.util.Date; public class DateIndex { public static void main(String[] args){ Date date = new Date(2012-1900, 8, 1); System.out.println(date); // output Sat Sep 01 00:00:00 ICT 2012 long msec = date.getTime(); msec += 3 * 24 * 60 * 60 * 1000L; date.setTime(msec); System.out.println(date); // output Tue Sep 04 00:00:00 ICT 2012 } }ตัวอย่างนี้ สร้าง Object Date ซึ่งมีค่าเป็นเวลา ณ วันที่ 1 กันยายน 2012 แล้วทำการ getTime ออกมาเมื่อเทียบกับ Thu Jan 01 07:00:00 ICT 1970 จากนั้นนำ ค่า getTime ที่ได้มาบวกเพิ่มอีก 3 วัน นั่นคือ 3 * 24 * 60 * 60 * 1000 มิลลิวินาที จากนั้น ใช้ setTime ให้กับ Object จึงได้ค่าเวลา 3 วันถัดไป