![]() |
lập trình java |
Lập trình Java cung cấp lớp Date có sẵn trong gói java.util , lớp này đóng gói ngày và giờ hiện tại.
Lớp Date hỗ trợ hai hàm tạo như được hiển thị trong bảng sau.
Sr.No. | Constructor & Mô tả |
---|---|
1 | Ngày( ) Hàm khởi tạo này khởi tạo đối tượng với ngày tháng và thời gian hiện tại. |
2 | Ngày (dài millisec) Nhà xây dựng này chấp nhận một đối số bằng số mili giây đã trôi qua kể từ nửa đêm, ngày 1 tháng 1 năm 1970. |
Sr.No. | Phương thức & Mô tả |
---|---|
1 | boolean after (Ngày tháng) Trả về true nếu đối tượng Date được gọi có chứa một ngày trễ hơn ngày được chỉ định theo ngày, ngược lại, nó trả về false. |
2 | boolean before (Ngày tháng) Trả về true nếu đối tượng Date được gọi có chứa một ngày sớm hơn ngày được chỉ định theo ngày, ngược lại, nó trả về false. |
3 | Đối tượng nhân bản () Nhân đôi đối tượng Date gọi. |
4 | int compareTo (Ngày tháng) So sánh giá trị của đối tượng gọi với giá trị ngày tháng. Trả về 0 nếu các giá trị bằng nhau. Trả về giá trị âm nếu đối tượng gọi sớm hơn ngày tháng. Trả về giá trị dương nếu đối tượng gọi sau ngày tháng. |
5 | int compareTo (Object obj) Hoạt động giống hệt với compareTo (Date) nếu obj thuộc lớp Date. Nếu không, nó sẽ ném ra một ClassCastException. |
6 | boolean bằng (Ngày đối tượng) Trả về true nếu đối tượng Date được gọi có chứa cùng thời gian và ngày tháng được chỉ định theo ngày tháng, ngược lại, nó trả về false. |
7 |
getTime dài ()
Trả về số mili giây đã trôi qua kể từ ngày 1 tháng 1 năm 1970. |
số 8 | int hashCode () Trả về mã băm cho đối tượng gọi. |
9 | void setTime (thời gian dài) Đặt thời gian và ngày theo thời gian được chỉ định, biểu thị thời gian trôi qua tính bằng mili giây từ nửa đêm, ngày 1 tháng 1 năm 1970. |
10 | Chuỗi toString () Chuyển đổi đối tượng Date invoking thành một chuỗi và trả về kết quả. |
Lấy ngày và giờ hiện tại
Đây là một phương pháp rất dễ dàng để có được ngày và giờ hiện tại trong Java. Bạn có thể sử dụng một đối tượng Date đơn giản với phương thức toString () để in ngày giờ hiện tại như sau:Thí dụ
import java.util.Date; public class DateDemo { public static void main(String args[]) { // Instantiate a Date object Date date = new Date(); // display time and date using toString() System.out.println(date.toString()); } }
Điều này sẽ tạo ra kết quả sau
Đầu raon May 04 09:51:52 CDT 2009
So sánh ngày tháng
Sau đây là ba cách để so sánh hai ngàyBạn có thể sử dụng getTime () để lấy số mili giây đã trôi qua kể từ nửa đêm, ngày 1 tháng 1 năm 1970, cho cả hai đối tượng và sau đó so sánh hai giá trị này.
Bạn có thể sử dụng các phương thức before (), after () và equals (). Bởi vì ngày 12 của tháng đến trước ngày 18, ví dụ, ngày mới (99, 2, 12) .trước khi (ngày mới (99, 2, 18)) trả về true.
Bạn có thể sử dụng phương thức compareTo (), được định nghĩa bởi giao diện Comparable và được thực hiện bởi Date.
Định dạng ngày bằng SimpleDateFormat
SimpleDateFormat là một lớp cụ thể để định dạng và phân tích các ngày theo cách nhạy cảm theo miền địa phương. SimpleDateFormat cho phép bạn bắt đầu bằng cách chọn bất kỳ mẫu do người dùng xác định cho định dạng ngày giờ.Thí dụ
import java.util.*; import java.text.*; public class DateDemo { public static void main(String args[]) { Date dNow = new Date( ); SimpleDateFormat ft = new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz"); System.out.println("Current Date: " + ft.format(dNow)); } }
Điều này sẽ tạo ra kết quả sau
Đầu raCurrent Date: Sun 2004.07.18 at 04:14:09 PM PDT
Mã định dạng DateFormat đơn giản
Để chỉ định định dạng thời gian, hãy sử dụng chuỗi mẫu thời gian. Trong mẫu này, tất cả các chữ cái ASCII được dành riêng làm mẫu chữ cái, được định nghĩa như sau:Tính cách | Sự miêu tả | Thí dụ |
---|---|---|
G | Era designator | AD |
y | Năm bằng bốn chữ số | 2001 |
M | Tháng trong năm | Tháng 7 hoặc 07 |
d | Ngày trong tháng | 10 |
h | Giờ trong giờ sáng / chiều (1 ~ 12) | 12 |
H | Giờ trong ngày (0 ~ 23) | 22 |
m | Phút trong giờ | 30 |
S | Thứ hai tính bằng phút | 55 |
S | Mili giây | 234 |
E | Ngày trong tuần | Thứ ba |
D | Ngày trong năm | 360 |
F | Ngày trong tuần trong tháng | 2 (thứ hai thứ tư trong tháng bảy) |
w | Tuần trong năm | 40 |
W | Tuần trong tháng | 1 |
một | Điểm đánh dấu AM / PM | PM |
k | Giờ trong ngày (1 ~ 24) | 24 |
K | Giờ trong giờ sáng / tối (0 ~ 11) | 10 |
z | Múi giờ | giờ chuẩn phương Đông |
' | Escape cho văn bản | Dấu phân tách |
" | Trích dẫn một lần | ` |
Định dạng ngày bằng printf
Định dạng ngày tháng và thời gian có thể được thực hiện rất dễ dàng bằng phương pháp printf . Bạn sử dụng định dạng hai chữ cái, bắt đầu bằng chữ tvà kết thúc bằng một trong các chữ cái của bảng như được hiển thị trong đoạn mã sau.Thí dụ
import java.util.Date; public class DateDemo { public static void main(String args[]) { // Instantiate a Date object Date date = new Date(); // display time and date String str = String.format("Current Date/Time : %tc", date ); System.out.printf(str); } }Điều này sẽ tạo ra kết quả sau
Đầu ra
Current Date/Time : Sat Dec 15 16:37:57 MST 2012
Sẽ hơi ngớ ngẩn nếu bạn phải cung cấp ngày nhiều lần để định dạng từng phần. Vì lý do đó, một chuỗi định dạng có thể cho biết chỉ mục của đối số được định dạng.
Chỉ số phải ngay lập tức theo% và nó phải được chấm dứt bởi $.
Thí dụ
import java.util.Date; public class DateDemo { public static void main(String args[]) { // Instantiate a Date object Date date = new Date(); // display time and date System.out.printf("%1$s %2$tB %2$td, %2$tY", "Due date:", date); } }Điều này sẽ tạo ra kết quả sau
Đầu ra
Due date: February 09, 2004
Ngoài ra, bạn có thể sử dụng <flag. Nó chỉ ra rằng cùng một đối số như trong đặc tả định dạng trước đó nên được sử dụng lại.
Thí dụ
import java.util.Date; public class DateDemo { public static void main(String args[]) { // Instantiate a Date object Date date = new Date(); // display formatted date System.out.printf("%s %tB %<te, %<tY", "Due date:", date); } }Điều này sẽ tạo ra kết quả sau
Đầu ra
Due date: February 09, 2004
Ký tự chuyển đổi ngày và giờTính cách | Sự miêu tả | Thí dụ |
---|---|---|
c | Hoàn thành ngày giờ | Thứ Hai, ngày 4 tháng 5, 09:51:52 CDT 2009 |
F | Ngày ISO 8601 | 2004-02-09 |
D | Ngày được định dạng của Hoa Kỳ (tháng / ngày / năm) | 02/09/2004 |
T | 24 giờ | 18:05:19 |
r | 12 giờ | 06:05:19 chiều |
R | Thời gian 24 giờ, không có giây | 18:05 |
Y | Năm bốn chữ số (với số 0 đứng đầu) | 2004 |
y | Hai số cuối của năm (với số 0 đứng đầu) | 04 |
C | Hai chữ số đầu tiên của năm (có số 0 đứng đầu) | 20 |
B | Tên tháng đầy đủ | Tháng hai |
b | Tên tháng viết tắt | Tháng hai |
m | Tháng hai chữ số (có số 0 đứng đầu) | 02 |
d | Ngày hai chữ số (có số 0 đứng đầu) | 03 |
e | Ngày hai chữ số (không có số 0 đứng đầu) | 9 |
A | Tên đầy đủ ngày trong tuần | Thứ hai |
một | Tên ngày trong tuần viết tắt | Thứ Hai |
j | Ngày có ba chữ số trong năm (với số 0 đứng đầu) | 069 |
H | Giờ hai chữ số (có số 0 đứng đầu), trong khoảng từ 00 đến 23 | 18 |
k | Giờ hai chữ số (không có số 0 đứng đầu), trong khoảng từ 0 đến 23 | 18 |
tôi | Giờ hai chữ số (có số 0 đứng đầu), trong khoảng từ 1 đến 12 | 06 |
l | Giờ hai chữ số (không có số 0 đứng đầu), từ 1 đến 12 | 6 |
M | Số phút hai chữ số (có số 0 đứng đầu) | 05 |
S | Số giây hai chữ số (với số 0 đứng đầu) | 19 |
L | Ba phần nghìn giây (với số 0 đứng đầu) | 047 |
N | Chín nano giây (với số 0 đứng đầu) | 047000000 |
P | Chữ viết sáng hoặc chiều | PM |
p | Chữ thường sáng hoặc chiều | PM |
z | RFC 822 bù đắp số từ GMT | -0800 |
Z | Múi giờ | PST |
S | Số giây từ 1970-01-01 00:00:00 GMT | 1078884319 |
Q | Mili giây kể từ 1970-01-01 00:00:00 GMT | 1078884319047 |
Phân tích chuỗi thành ngày
Lớp SimpleDateFormat có một số phương thức bổ sung, đặc biệt là phân tích cú pháp (), để phân tích một chuỗi theo định dạng được lưu trữ trong đối tượng SimpleDateFormat đã cho.Thí dụ
import java.util.*; import java.text.*; public class DateDemo { public static void main(String args[]) { SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd"); String input = args.length == 0 ? "1818-11-11" : args[0]; System.out.print(input + " Parses as "); Date t; try { t = ft.parse(input); System.out.println(t); } catch (ParseException e) { System.out.println("Unparseable using " + ft); } } }Một chạy mẫu của chương trình trên sẽ tạo ra kết quả sau:
Đầu ra
1818-11-11 Parses as Wed Nov 11 00:00:00 EST 1818
Ngủ trong một thời gian
Bạn có thể ngủ trong bất kỳ khoảng thời gian nào từ một phần nghìn giây đến thời gian tồn tại của máy tính. Ví dụ, chương trình sau đây sẽ ngủ trong 3 giây -Thí dụ
import java.util.*; public class SleepDemo { public static void main(String args[]) { try { System.out.println(new Date( ) + "\n"); Thread.sleep(5*60*10); System.out.println(new Date( ) + "\n"); } catch (Exception e) { System.out.println("Got an exception!"); } } }Điều này sẽ tạo ra kết quả sau
Đầu ra
Sun May 03 18:04:41 GMT 2009 Sun May 03 18:04:51 GMT 2009
Đo thời gian trôi qua
Đôi khi, bạn có thể cần phải đo thời gian tính bằng mili giây. Vì vậy, hãy viết lại ví dụ trên một lần nữaThí dụ
import java.util.*; public class DiffDemo { public static void main(String args[]) { try { long start = System.currentTimeMillis( ); System.out.println(new Date( ) + "\n"); Thread.sleep(5*60*10); System.out.println(new Date( ) + "\n"); long end = System.currentTimeMillis( ); long diff = end - start; System.out.println("Difference is : " + diff); } catch (Exception e) { System.out.println("Got an exception!"); } } }Điều này sẽ tạo ra kết quả sau
Đầu ra
Sun May 03 18:16:51 GMT 2009
Sun May 03 18:16:57 GMT 2009
Difference is : 5993
Lớp GregorianCalendar
GregorianCalendar là một triển khai cụ thể của một lớp Lịch thực hiện lịch Gregorian bình thường mà bạn quen thuộc. Chúng tôi đã không thảo luận về lớp Lịch trong hướng dẫn này, bạn có thể tra cứu tài liệu Java chuẩn cho việc này.Phương thức getInstance () của Lịch trả về một GregorianCalendar được khởi tạo với ngày và giờ hiện tại theo ngôn ngữ và múi giờ mặc định. GregorianCalendar định nghĩa hai trường: AD và BC. Chúng đại diện cho hai thời đại được định nghĩa bởi lịch Gregorian.
Ngoài ra còn có một số hàm tạo cho các đối tượng GregorianCalendar
Sr.No. | Constructor & Mô tả |
---|---|
1 | GregorianCalendar () Xây dựng một GregorianCalendar mặc định bằng cách sử dụng thời gian hiện tại trong múi giờ mặc định với ngôn ngữ mặc định. |
2 | GregorianCalendar (int năm, int tháng, int ngày) Xây dựng một GregorianCalendar với ngày đã cho được đặt trong múi giờ mặc định với ngôn ngữ mặc định. |
3 | GregorianCalendar (int năm, int tháng, int ngày, int giờ, int phút) Xây dựng một GregorianCalendar với ngày và giờ đã đặt cho múi giờ mặc định với ngôn ngữ mặc định. |
4 | GregorianCalendar (int năm, int tháng, int ngày, int giờ, int phút, int thứ hai) Xây dựng một GregorianCalendar với ngày và giờ đã đặt cho múi giờ mặc định với ngôn ngữ mặc định. |
5 | GregorianCalendar (Locale aLocale) Xây dựng một GregorianCalendar dựa trên thời gian hiện tại trong múi giờ mặc định với miền địa phương đã cho. |
6 | GregorianCalendar (múi giờ Zonezone) Xây dựng một GregorianCalendar dựa trên thời gian hiện tại trong múi giờ nhất định với ngôn ngữ mặc định. |
7 | GregorianCalendar (múi giờ Zone, Locale aLocale) Xây dựng một GregorianCalendar dựa trên thời gian hiện tại trong múi giờ đã cho với miền địa phương đã cho. |
Sr.No. | Phương thức & Mô tả |
---|---|
1 | void add (int trường, int số tiền) Thêm khoảng thời gian được chỉ định (đã ký) vào trường thời gian đã cho, dựa trên các quy tắc của lịch. |
2 | bảo vệ void computeFields () Chuyển đổi UTC thành mili giây thành giá trị trường thời gian. |
3 | bảo vệ void computeTime () Ghi đè lịch Chuyển đổi giá trị trường thời gian thành UTC dưới dạng mili giây. |
4 | boolean bằng (Object obj) So sánh GregorianCalendar này với tham chiếu đối tượng. |
5 | int get (int field) Lấy giá trị cho một trường thời gian cụ thể. |
6 | int getActualMaximum (int field) Trả về giá trị lớn nhất mà trường này có thể có, cho ngày hiện tại. |
7 | int getActualMinimum (int field) Trả về giá trị nhỏ nhất mà trường này có thể có, cho ngày hiện tại. |
số 8 | int getGreatestMinimum (int field) Trả về giá trị tối thiểu cao nhất cho trường đã cho nếu thay đổi. |
9 | Ngày getGregorianChange () Lấy ngày thay đổi Lịch Gregorian. |
10 | int getLeastMaximum (int field) Trả về giá trị tối đa thấp nhất cho trường đã cho nếu thay đổi. |
11 | int getMaximum (int field) Trả về giá trị lớn nhất cho trường đã cho. |
12 | Ngày getTime () Nhận thời gian hiện tại của Lịch này. |
13 | dài getTimeInMillis () Nhận thời gian hiện tại của Lịch này trong một thời gian dài. |
14 | TimeZone getTimeZone () Lấy múi giờ. |
15 | int getMinimum (int field) Trả về giá trị nhỏ nhất cho trường đã cho. |
16 | int hashCode () Ghi đè hashCode. |
17 | boolean isLeapYear (năm int) Xác định nếu năm đã cho là năm nhuận. |
18 | void cuộn (int trường, boolean lên) Thêm hoặc trừ (lên / xuống) một đơn vị thời gian trên trường thời gian đã cho mà không thay đổi các trường lớn hơn. |
19 | bộ trống (trường int, giá trị int) Đặt trường thời gian bằng giá trị đã cho. |
20 | bộ void (int năm, int tháng, int ngày) Đặt giá trị cho các trường năm, tháng và ngày. |
21 | void set (int năm, int tháng, int ngày, int giờ, int phút) Đặt giá trị cho các trường năm, tháng, ngày, giờ và phút. |
22 | void set (int năm, int tháng, int ngày, int giờ, int phút, int thứ hai) Đặt giá trị cho các trường năm, tháng, ngày, giờ, phút và giây. |
23 | void setGregorianChange (Ngày tháng) Đặt ngày thay đổi GregorianCalendar. |
24 | void setTime (Ngày tháng) Đặt thời gian hiện tại của Lịch này với Ngày đã cho. |
25 | void setTimeInMillis (dài millis) Đặt thời gian hiện tại của Lịch này từ giá trị dài nhất định. |
26 | void setTimeZone (giá trị TimeZone) Đặt múi giờ với giá trị múi giờ đã cho. |
27 | Chuỗi toString () Trả về biểu diễn chuỗi của lịch này. |
Thí dụ
import java.util.*; public class GregorianCalendarDemo { public static void main(String args[]) { String months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; int year; // Create a Gregorian calendar initialized // with the current date and time in the // default locale and timezone. GregorianCalendar gcalendar = new GregorianCalendar(); // Display current time and date information. System.out.print("Date: "); System.out.print(months[gcalendar.get(Calendar.MONTH)]); System.out.print(" " + gcalendar.get(Calendar.DATE) + " "); System.out.println(year = gcalendar.get(Calendar.YEAR)); System.out.print("Time: "); System.out.print(gcalendar.get(Calendar.HOUR) + ":"); System.out.print(gcalendar.get(Calendar.MINUTE) + ":"); System.out.println(gcalendar.get(Calendar.SECOND)); // Test if the current year is a leap year if(gcalendar.isLeapYear(year)) { System.out.println("The current year is a leap year"); }else { System.out.println("The current year is not a leap year"); } } }Điều này sẽ tạo ra kết quả sau
Đầu ra
Date: Apr 22 2009
Time: 11:25:27
The current year is not a leap year
Để có danh sách đầy đủ các hằng số có sẵn trong lớp Lịch, bạn có thể tham khảo tài liệu Java chuẩn.
Không có nhận xét nào:
Đăng nhận xét