Thứ Năm, 17 tháng 1, 2019

Khóa học lập trình Java - Ngày và giờ

Khóa học lập trình Java cung cấp lớp Date có sẵn trong gói java.util , lớp này gói gọn ngày và giờ hiện tại.

Lớp Date hỗ trợ hai hàm tạo như trong bảng sau.

Khóa học lập trình Java
Khóa học lập trình Java


Sr.Không.Người xây dựng & Mô tả
1Ngày( )
Hàm tạo này khởi tạo đối tượng với ngày và giờ hiện tại.
2Ngày (millisec dài)
Nhà xây dựng này chấp nhận một đối số bằng với số mili giây đã trôi qua kể từ nửa đêm, ngày 1 tháng 1 năm 1970.

Sau đây là các phương thức của lớp ngày.


Sr.Không.Phương pháp & Mô tả
1boolean sau (Ngày tháng)

Trả về true nếu đối tượng Date gọi có chứa ngày muộn hơn ngày được chỉ định bởi ngày, nếu không, nó sẽ trả về false.
2boolean trước (Ngày ngày)
Trả về true nếu đối tượng Date gọi có chứa ngày sớm hơn ngày được chỉ định bởi ngày, nếu không, nó sẽ trả về false.
3Đối tượng nhân bản ()
Sao y đối tượng ngày gọi.
4int so sánh với (ngày ngày)
So sánh giá trị của đối tượng gọi với ngày. 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. Trả về giá trị dương nếu đối tượng gọi muộn hơn ngày.
5int so sánhTo (Object obj)

Hoạt động giống hệt nhau để so sánhTo (Ngày) nếu obj thuộc lớp Ngày. Mặt khác, nó ném ClassCastException.
6boolean bằng (ngày đối tượng)

Trả về true nếu đối tượng Date gọi có cùng thời gian và ngày với đối tượng được chỉ định theo ngày, nếu không, nó sẽ trả về false.
7getTime dài ()

Trả về số mili giây đã trôi qua kể từ ngày 1 tháng 1 năm 1970.
số 8int hashCode ()

Trả về mã băm cho đối tượng gọi.
9void setTime (thời gian dài)

Đặt thời gian và ngày theo chỉ định theo thời gian, 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.
10Chuỗi toString ()

Chuyển đổi đối tượng Date gọi 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 Khóa học lập trình Java. Bạn có thể sử dụng một đối tượng Ngày đơn giản với phương thức toString () để in ngày và giờ hiện tại như sau
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());
   }
}

on May 04 09:51:52 CDT 2009

So sánh ngày

Sau đây là ba cách để so sánh hai ngày

Bạ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 trước (), sau () và bằng (). 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ề đúng.

Bạn có thể sử dụng phương thức so sánh (), được xác định bởi giao diện so sánh và được triển khai theo ngày.

Khóa học lập trình Java Định dạng ngày bằng SimpleDateFormat

SimpleDateFormat là một lớp cụ thể để định dạng và phân tích ngày theo cách nhạy cảm với 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 để định dạng ngày giờ.
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));
   }
}

Current 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, 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 dưới dạng các chữ cái mẫu, được định nghĩa như sau

Tính cáchSự miêu tảThí dụ
GKỷ nguyên chỉ địnhQUẢNG CÁO
yNăm trong bốn chữ số2001
MTháng trong nămTháng 7 hoặc 07
dNgày trong tháng10
hGiờ trong AM / PM (1 ~ 12)12
HGiờ trong ngày (0 ~ 23)22
mPhút trong giờ30
SGiây phút55
SMột phần nghìn giây234
ENgày trong tuầnThứ ba
DNgày trong năm360
FNgày trong tuần trong tháng2 (thứ hai thứ tư trong tháng bảy)
wTuần trong năm40
WTuần trong tháng1
mộtĐiểm đánh dấu AM / PMPM
kGiờ trong ngày (1 ~ 24)24
KGiờ trong AM / PM (0 ~ 11)10
zMúi giờgiờ chuẩn phương Đông
'Thoát cho văn bảnDấu phân cách
"Trích dẫn duy nhất`

Định dạng ngày bằng printf

Khóa học lập trình Java Định dạng ngày và giờ 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 t và kết thúc bằng một trong các chữ cái của bảng như trong đoạn mã sau.
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);
   }
}
Current Date/Time : Sat Dec 15 16:37:57 MST 2012

Sẽ là một chút 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ể chỉ ra chỉ số của đối số sẽ được định dạng.

Chỉ mục phải ngay lập tức theo% và nó phải được chấm dứt bằng $.

Due date: February 09, 2004

Ngoài ra, bạn có thể sử dụng <cờ. Nó chỉ ra rằng đối số tương tự như trong đặc tả định dạng trước nên được sử dụng lại.

Due date: February 09, 2004

Nhân vật chuyển đổi ngày và giờ

Tính cáchSự miêu tảThí dụ
cNgày giờ hoàn thànhThứ Hai 04 Tháng 9 09:51:51 CDT 2009
FNgày ISO 86012004 / 02-09
DNgày định dạng của Hoa Kỳ (tháng / ngày / năm)02/09/2004
TThời gian 24 giờ18:05:19
rThời gian 12 giờ06:05:19 chiều
RThời gian 24 giờ, không có giây18:05
YNăm có bốn chữ số (với các số 0 đứng đầu)2004
yHai chữ số cuối của năm (với các số 0 đứng đầu)04
CHai chữ số đầu tiên của năm (với các số 0 đứng đầu)20
BTên đầy đủ thángTháng hai
bTên tháng viết tắtTháng hai
mTháng có hai chữ số (có số 0 đứng đầu)02
dNgày hai chữ số (với các số 0 đứng đầu)03
eNgày hai chữ số (không có số 0 đứng đầu)9
MộtTên ngày đầy đủThứ hai
mộtTên ngày viết tắtMôn
jNgày ba chữ số trong năm (với các số 0 đứng đầu)069
HGiờ hai chữ số (với các số 0 đứng đầu), từ 00 đến 2318
kGiờ hai chữ số (không có số 0 đứng đầu), từ 0 đến 2318
tôiGiờ hai chữ số (với các số 0 đứng đầu), từ 01 đến 1206
tôiGiờ hai chữ số (không có số 0 đứng đầu), từ 1 đến 126
MPhút hai chữ số (với các số 0 đứng đầu)05
SGiây hai chữ số (có số 0 đứng đầu)19
LBa chữ số mili giây (với các số 0 đứng đầu)047
NChín chữ số nano giây (với các số 0 đứng đầu)047000000
PĐánh dấu buổi sáng hoặc buổi chiềuPM
pChữ thường buổi sáng hoặc buổi chiềuPM
zPhần bù số RFC 822 từ GMT-0800
ZMúi giờPST
SGiây kể từ 1970-01-01 00:00:00 GMT1078884319
QMột phần nghìn giây kể từ 1970-01-01 00:00:00 GMT1078884319047
Có các lớp hữu ích khác liên quan đến Ngày và thời gian. Để biết thêm chi tiết, bạn có thể tham khảo tài liệu Tiêu chuẩn Khóa học lập trình Java.

Phân tích chuỗi thành ngày

Lớp SimpleDateFormat có một số phương thức bổ sung, đáng chú ý là parse (), cố gắng phân tích một chuỗi theo định dạng được lưu trữ trong đối tượng SimpleDateFormat đã cho.
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); 
      }
   }
}
Khóa học lập trình Java Một lần chạy mẫu của chương trình trên sẽ tạo ra kết quả như sau

1818-11-11 Parses as Wed Nov 11 00:00:00 EST 1818

Ngủ một lúc

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 cho đến thời gian sử dụng máy tính của bạn. Ví dụ: chương trình sau sẽ ngủ trong 3 giây
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!"); 
      }
   }
}

Sun May 03 18:04:41 GMT 2009
Sun May 03 18:04:51 GMT 2009

Đo thời gian đã qua

Đôi khi, bạn có thể cần đ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ữa
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!");
      }
   }
}

Sun May 03 18:16:51 GMT 2009
Sun May 03 18:16:57 GMT 2009
Difference is : 5993

Lớp GregorianCalWiki

GregorianCalWiki là một triển khai cụ thể của 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 Khóa học lập trình Java tiêu chuẩn cho việc này.

Phương thức getInstance () của Lịch trả về một GregorianCalWiki được khởi tạo với ngày và giờ hiện tại trong miền địa phương và múi giờ mặc định. GregorianCalWiki định nghĩa hai trường: AD và BC. Chúng đại diện cho hai thời đại được xác định bởi lịch Gregorian.

Ngoài ra còn có một số hàm tạo cho các đối tượng GregorianCalWiki

Sr.Không.Người xây dựng & Mô tả
1GregorianCalWiki ()
Xây dựng một GregorianCalWiki 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 miền địa phương mặc định.
2GregorianCalWiki (int năm, int tháng, int date)

Xây dựng một GregorianCalWiki với ngày đã cho được đặt trong múi giờ mặc định với miền địa phương mặc định.
3GregorianCalWiki (int năm, int tháng, int date, int giờ, int phút)
Xây dựng một GregorianCalWiki với ngày và giờ đã cho được đặt cho múi giờ mặc định với miền địa phương mặc định.
4GregorianCalWiki (int year, int tháng, int date, int hours, int phút, int second)
Xây dựng một GregorianCalWiki với ngày và giờ đã cho được đặt cho múi giờ mặc định với miền địa phương mặc định.
5GregorianCalWiki (Địa điểm aLocale)
Xây dựng một GregorianCalWiki 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.
6GregorianCalWiki (múi giờ)

Xây dựng một GregorianCalWiki dựa trên thời gian hiện tại trong múi giờ nhất định với miền địa phương mặc định.
7GregorianCalWiki (múi giờ, địa điểm aLocale)
Xây dựng một GregorianCalWiki dựa trên thời gian hiện tại trong múi giờ nhất định với miền địa phương đã cho.
Dưới đây là danh sách một vài phương thức hỗ trợ hữu ích được cung cấp bởi lớp GregorianCalWiki

Sr.Không.Phương pháp & Mô tả
1void add (int trường, int lượng)

Thêm lượng thời gian được chỉ định (đã ký) vào trường thời gian đã cho, dựa trên quy tắc của lịch.
2được bảo vệ void computeFields ()
Chuyển đổi UTC dưới dạng mili giây thành giá trị trường thời gian.
3được 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.
4boolean bằng (Object obj)
So sánh GregorianCalWiki này với một tham chiếu đối tượng.
5int get (trường int)
Nhận giá trị cho một trường thời gian nhất định.
6int getActualMaximum (trường int)

Trả về giá trị tối đa mà trường này có thể có, cho ngày hiện tại.
7int getActualMinimum (trường int)

Trả về giá trị tối thiểu mà trường này có thể có, cho ngày hiện tại.
số 8int getGreatestMinimum (trường int)

Trả về giá trị tối thiểu cao nhất cho trường đã cho nếu thay đổi.
9Ngày getGregorianChange ()
Được ngày thay đổi Lịch Gregorian.
10int getLeastMaximum (trường int)

Trả về giá trị tối đa thấp nhất cho trường đã cho nếu thay đổi.
11int getMaximum (trường int)
Trả về giá trị tối đa cho trường đã cho.
12Ngày getTime ()
Có được thời gian hiện tại của Lịch này.
13getTimeInMillis () dài
Có được thời gian hiện tại của Lịch này là một thời gian dài.
14TimeZone getTimeZone ()
Được múi giờ.
15int getMinimum (trường int)
Trả về giá trị tối thiểu cho trường đã cho.
16int hashCode ()

Ghi đè mã băm.
17boolean isLeapYear (int năm)
Xác định nếu năm nhất định là một năm nhuận.
18void roll (int trường, boolean up)

Thêm hoặc bớt (tăng / giảm) một đơn vị thời gian trên trường thời gian nhất định mà không thay đổi các trường lớn hơn.
19void set (trường int, int value)
Đặt trường thời gian với giá trị đã cho.
20void set (int year, int tháng, int date)
Đặt giá trị cho các trường năm, tháng và ngày.
21void set (int year, int tháng, int date, int hours, int phút)
Đặt các giá trị cho các trường năm, tháng, ngày, giờ và phút.
22void set (int year, int tháng, int date, int hours, int phút, int second)
Đặt các giá trị cho các trường năm, tháng, ngày, giờ, phút và giây.
23void setGregorianChange (Ngày ngày)

Đặt ngày thay đổi GregorianCalWiki.
24void setTime (Ngày tháng)

Đặt thời gian hiện tại của Lịch này với Ngày đã cho.
25void setTimeInMillis (millis dài)
Đặt thời gian hiện tại của Lịch này từ giá trị dài nhất định.
26void setTimeZone (Giá trị TimeZone)
Đặt múi giờ với giá trị múi giờ đã cho.
27Chuỗi toString ()

Trả về một chuỗi đại diện của lịch này.

Date: Apr 22 2009
Time: 11:25:27
The current year is not a leap year

Để có danh sách đầy đủ về hằng số có sẵn trong lớp Lịch, bạn có thể tham khảo tài liệu Khóa học lập trình Java tiêu chuẩn.

Không có nhận xét nào:

Đăng nhận xét

Lập trình Java - Ngoại lệ

Một ngoại lệ (hoặc sự kiện đặc biệt) là một vấn đề phát sinh trong quá trình thực hiện chương trình. Khi xảy ra Ngoại lệ , luồng bình thường...