1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo lập trình java về The Time Line

4 350 1

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 4
Dung lượng 466 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

... Duration timeElapsed2 = Duration.between(start2, end2); boolean overTenTimesFaster = timeElapsed.multipliedBy(10).minus(timeElapsed2).isNegative(); // Or timeElapsed.toNanos() * 10 < timeElapsed2.toNanos()...Hà Nội, 9/2015 Chương The new date and time api 5.1 The time line Trong lịch sử, đơn vị thời gian có nguồn gốc từ vòng quay trái đất quanh... máy tính phải thực việc đồng thời gian chúng với dịch vụ thời gian thực API Date and Time Java đòi hỏi đặc tả Java phải sử dụng quy mô thời gian : + Phải có 86400s ngày + Trùng khớp với thời điểm

Trang 1

ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG

-˜ª˜ -BÁO CÁO BÀI TẬP LỚN

Lập trình Java IT4784

THE TIME LINE

Giảng viên hướng dẫn: TS Nguyễn Hồng Quang Sinh viên thực hiện: Trần Thị Hoa

Hà Nội, 9/2015

Trang 2

Chương 5 The new date and time api

5.1 The time line

Trong lịch sử, các đơn vị thời gian cơ bản có nguồn gốc từ vòng quay của trái đất quanh trục của nó Có 24 giờ hoặc 24 × 60 × 60 = 86.400 giây trong một sự xoay vòng kín, do đó, nó có vẻ như chỉ là một câu hỏi của các phép đo thiên văn để xác định chính xác một giây Thật không may, trái đất rung động nhẹ, và một định nghĩa chính xác hơn là cần thiết Năm 1967, một định nghĩa chính xác mới về một giây, phù hợp với định nghĩa lịch sử, có nguồn gốc từ một tài sản nội tại của

nguyên tử caesium 133 Kể từ đó, một mạng lưới chu kỳ nguyên tử đã giúp xác định chính xác thời gian

Thường trước đây, thời gian chính thức tuân thủ việc đồng bộ thời gian tuyệt đối với sự quay của trái đất Đầu tiên thời gian chính thức được hiệu chỉnh sơ qua, nhưng bắt đầu từ năm 1972 “leap seconds” – bước nhảy của giây – thỉnh thoảng được thêm vào Theo học thuyết, một giây có thể dịch chuyển được trong một khoảng thời gian, nhưng không có sự việc nào xảy ra Người ta nói về sự thay đổi của hệ thống một lần nữa Một cách rõ ràng, “leap seconds” là một khó nhọc và một số hệ thống máy tính thay thế việc sử dụng “smoothing” – làm trơn – để làm thời gian nhân tạo chậm lại hoặc nhanh hơn leap seconds sao cho có 86400s trong một ngày Có việc này là bởi vì thời gian cục bộ trên các máy tính là không giống nhau Và tất cả các máy tính sẽ phải thực hiện việc đồng bộ thời gian của chúng với dịch vụ thời gian thực

API Date and Time trong Java đòi hỏi đặc tả trong Java phải sử dụng một quy mô thời gian :

+ Phải có 86400s trong một ngày

+ Trùng khớp với thời điểm chính thức vào buổi trưa mỗi ngày

+Chặt chẽ phù hợp với nó ở nơi khác, trong một cách thức xác định chính xác

Trang 3

Điều đó giúp cho Java có sự linh hoạt để thích nghi với những thay đổi trong tương lai trong thời gian chính thức

Trong java Instant đại diện cho một điểm trong dòng thời gian Trước kia nó được gọi là epoch, được tự đặt ra vào lúc nửa đêm ngày 1 tháng 1 năm 1970 tại kinh tuyến gốc đi qua đài thiên văn Greenwich Royal ở Luân Đôn Giống như trong hội nghị Unix / POSIX về thời gian Bắt đầu từ nguồn gốc đó, thời gian được đo trong 86.400 giây mỗi ngày, tới lui, trong nano giây chính xác Các giá Instant thì có thể trở lại một tỷ năm về trước (Instant.MIN) Đó không phải là khá đủ để thể hiện độ tuổi của vũ trụ (khoảng 13,5 tỷ năm), nhưng nó là đủ cho tất cả các mục đích thực

tế Sau khi tất cả, một tỷ năm trước, trái đất được bao phủ bởi băng và nơi cư trú của tổ tiên của thực vật và động vật ngày nay Giá trị lớn nhất, Instant.MAX, là 31 tháng 12 của năm 1000000000 Gọi phương thức Instant.now () cung cấp thời gian hiện tại Ta có thể so sánh hai instant bằng equal hoặc compareTo theo cách thông thường, vì vậy bạn có thể sử dụng instant như là mốc thời gian Để tìm ra khoảng cách giữa hai instant, sử dụng phương thức Duration.between Ví dụ, ở đây là làm thế nào có thể đo thời gian chạy của thuật toán:

Instant start = Instant.now();

runAlgorithm();

Instant end = Instant.now();

Duration timeElapsed = Duration.between(start, end);

long millis = timeElapsed.toMillis();

Một Duration là khoảng thời gian giữa hai instants Ta có thể lấy length của một Duration trong các đơn vị thông thường bằng cách gọi toNanos, toMillis,

toSeconds, để Minutes, toHours hoặc toDays

Durations đòi hỏi nhiều hơn một giá trị long cho việc lưu trữ nội bộ của họ Con số giây được lưu trữ trong một long, và số lượng nano giây trong trong 1 additionals int

Nếu bạn muốn thực hiện các tính toán về độ chính xác nano giây, và bạn thực sự cần phải biết toàn bộ phạm vi của một Duration, sau đó bạn có thể sử dụng một trong các phương pháp trong Bảng 5-1 Nếu không, bạn chỉ có thể gọi toNanos và làm các phép tính của bạn với giá trị lâu dài

Trang 4

Method Miêu tả

hoặc Duration plusNanos, plusMillis, plusSeconds,

plusMinutes, plusHours, plusDays

Thêm một đơn vị thời gian nhất định vào Instant hoặc Duration

minusNanos, minusMillis,

minusSeconds, minusMinutes,

minusHours, minusDays

Trừ một đơn vị thời gian vào Instant hoặc Duration

multipliedBy, dividedBy, negated Trả về một Duration thu được bằng cách

nhân hoặc chia Duration này bằng một giá trị kiểu long, hoặc bằng -1 Lưu ý rằng bạn chỉ có thể mở rộng Durations, Instants thì không

isZero, isNegative Kiểm tra Duration có phải là số không

hay số âm

Ví dụ, nếu muốn kiểm tra xem một thuật toán nhanh hơn ít nhất mười lần thuật toán khác, ta có thể tính:

Duration timeElapsed2 = Duration.between(start2, end2);

boolean overTenTimesFaster =

timeElapsed.multipliedBy(10).minus(timeElapsed2).isNegative();

// Or timeElapsed.toNanos() * 10 < timeElapsed2.toNanos()

Chú ý: Các lớp Instant và Duration là không thay đổi, và tất cả các phương thức như multipedBy hoặc minus, trả về một instance mới

Ngày đăng: 29/09/2015, 08:24

TỪ KHÓA LIÊN QUAN

w