|
ไอที |
Java |
29206
รู้จัก และใช้ java.util.Date กับ method ต่าง ๆ
Date เป็นคลาส หนึ่ง ในคลาสมาตรฐานของ java ซึ่งอยู่ใน java.util.Date
Date ก็คือเวลา ดังนั้น ในคลาสนี้จึงเป็นคลาสที่จัดการเกี่ยวกับเวลา
ในการเขียนโปรแกรมต่าง ๆ ส่วนมาก มักมีวันที่มาเกี่ยวข้อง ไม่ว่าจะเป็นวันที่บันทึกข้อมูล วันที่แก้ไขข้อมูล ยิ่งโปรแกรใหญ่ ๆ ปฏิทินวันที่ ยิ่งเป็นสิ่งที่ขาดไม่ได้เลย ดังนั้นในบทความนี้ เรามาดูคลาส ซึ่งเป็นคลาสหนึ่งใน 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 วันถัดไป