Hướng dẫn how does python handle date and time? - python xử lý ngày và giờ như thế nào?
Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem cùng với hướng dẫn bằng văn bản để hiểu sâu hơn về sự hiểu biết của bạn: Sử dụng mô -đun DateTime của Python This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Using Python's datetime Module Show
Làm việc với ngày và thời gian là một trong những thách thức lớn nhất trong lập trình. Giữa việc xử lý các múi giờ, thời gian tiết kiệm ánh sáng ban ngày và các định dạng ngày viết khác nhau, có thể rất khó để theo dõi ngày và thời gian mà bạn tham khảo. May mắn thay, mô-đun Python 4 tích hợp có thể giúp bạn quản lý bản chất phức tạp của ngày và thời gian. 4 module can help you manage the complex nature of dates and times.Trong hướng dẫn này, bạn sẽ học:
Thêm vào đó, bạn sẽ phát triển một ứng dụng gọn gàng để đếm ngược thời gian còn lại cho đến khi chúng tôi tiếp theo! Bắt đầu nào! Lập trình với ngày và thời gianNếu bạn đã từng làm việc trên các phần mềm cần theo dõi thời gian trên một số khu vực địa lý, thì bạn có thể có cảm giác tại sao lập trình theo thời gian có thể là một nỗi đau như vậy. Ngắt kết nối cơ bản là các chương trình máy tính thích các sự kiện được đặt hàng hoàn hảo và thường xuyên, nhưng cách mà hầu hết con người sử dụng và đề cập đến thời gian là rất bất thường. Một ví dụ tuyệt vời về sự bất thường này là thời gian tiết kiệm ánh sáng ban ngày. Tại Hoa Kỳ và Canada, đồng hồ được thiết lập sau một giờ vào Chủ nhật thứ hai vào tháng 3 và trở lại sau một giờ vào Chủ nhật đầu tiên vào tháng 11. Tuy nhiên, đây chỉ là trường hợp kể từ năm 2007. Trước năm 2007, đồng hồ đã được thiết lập vào Chủ nhật đầu tiên vào tháng Tư và trở lại vào Chủ nhật tuần trước vào tháng Mười.daylight saving time. In the United States and Canada, clocks are set forward by one hour on the second Sunday in March and set back by one hour on the first Sunday in November. However, this has only been the case since 2007. Prior to 2007, clocks were set forward on the first Sunday in April and set back on the last Sunday in October. Mọi thứ thậm chí còn phức tạp hơn khi bạn xem xét múi giờ. Lý tưởng nhất, ranh giới múi giờ sẽ theo các đường kinh độ chính xác. Tuy nhiên, vì lý do lịch sử và chính trị, các dòng múi giờ hiếm khi thẳng thắn. Thông thường, các khu vực được phân tách bởi khoảng cách lớn thấy mình trong cùng múi giờ và các khu vực liền kề nằm trong các múi giờ khác nhau. Có một số múi giờ ngoài kia với những hình dạng khá thú vị.time zones. Ideally, time zone boundaries would follow lines of longitude exactly. However, for historical and political reasons, time zone lines are rarely straight. Often, areas that are separated by large distances find themselves in the same time zone, and adjacent areas are in different time zones. There are some time zones out there with pretty funky shapes. Cách tính thời gian của máy tínhGần như tất cả các máy tính đều đếm thời gian từ một thời điểm được gọi là Epoch Unix. Điều này xảy ra vào ngày 1 tháng 1 năm 1970, lúc 00:00:00 UTC. UTC là viết tắt của thời gian phối hợp phổ quát và đề cập đến thời gian ở kinh độ 0 °. UTC thường được gọi là thời gian trung bình của Greenwich, hoặc GMT. UTC không được điều chỉnh cho thời gian tiết kiệm ánh sáng ban ngày, vì vậy nó luôn giữ hai mươi bốn giờ mỗi ngày.Unix epoch. This occurred on January 1, 1970, at 00:00:00 UTC. UTC stands for Coordinated Universal Time and refers to the time at a longitude of 0°. UTC is often also called Greenwich Mean Time, or GMT. UTC is not adjusted for daylight saving time, so it consistently keeps twenty-four hours in every day. Theo định nghĩa, thời gian UNIX trôi qua với tốc độ tương đương với UTC, do đó, bước một giây trong UTC tương ứng với bước một giây trong thời gian UNIX. Bạn thường có thể tìm ra ngày và giờ ở UTC của bất kỳ tức thời nào kể từ ngày 1 tháng 1 năm 1970, bằng cách đếm số giây kể từ thời đại Unix, ngoại trừ những giây nhảy. Bước nhảy vọt đôi khi được thêm vào UTC để giải thích cho sự chậm lại của vòng quay Trái đất nhưng không được thêm vào thời gian UNIX.leap seconds. Leap seconds are occasionally added to UTC to account for the slowing of the Earth’s rotation but are not added to Unix time. Gần như tất cả các ngôn ngữ lập trình, bao gồm Python, kết hợp khái niệm về thời gian Unix. Thư viện tiêu chuẩn Python sườn bao gồm một mô -đun có tên 6 có thể in số giây kể từ thời đại unix:>>>
Trong ví dụ này, bạn nhập mô -đun 6 và thực thi 8 để in thời gian Unix hoặc số giây (không bao gồm các giây nhảy) kể từ thời đại.Ngoài thời gian UNIX, máy tính cần một cách để truyền tải thông tin thời gian cho người dùng. Như bạn đã thấy trong ví dụ cuối cùng, thời gian Unix gần như không thể phân tích được. Thay vào đó, thời gian UNIX thường được chuyển đổi thành UTC, sau đó có thể được chuyển đổi thành thời gian cục bộ bằng cách sử dụng độ lệch múi giờ.time zone offsets. Internet được chỉ định các số cơ quan (IANA) duy trì một cơ sở dữ liệu của tất cả các giá trị của độ lệch múi giờ. IANA cũng phát hành các bản cập nhật thường xuyên bao gồm bất kỳ thay đổi nào trong độ lệch múi giờ. Cơ sở dữ liệu này thường được bao gồm trong hệ điều hành của bạn, mặc dù một số ứng dụng có thể bao gồm một bản sao cập nhật.Internet Assigned Numbers Authority (IANA) maintains a database of all of the values of time zone offsets. IANA also releases regular updates that include any changes in time zone offsets. This database is often included with your operating system, although certain applications may include an updated copy. Cơ sở dữ liệu chứa một bản sao của tất cả các múi giờ được chỉ định và số giờ và phút họ bù đắp từ UTC. Vì vậy, trong mùa đông, khi thời gian tiết kiệm ánh sáng ban ngày không có hiệu lực, múi giờ phía đông của Hoa Kỳ có phần bù -05: 00 hoặc năm giờ âm từ UTC. Các khu vực khác có độ lệch khác nhau, có thể không phải là giờ nguyên. Ví dụ, độ bù của UTC cho Nepal là +05: 45 hoặc năm giờ tích cực và bốn mươi lăm phút từ UTC. Làm thế nào các ngày tiêu chuẩn có thể được báo cáoThời gian Unix là cách tính thời gian của máy tính, nhưng sẽ không hiệu quả đến mức không hiệu quả khi xác định thời gian bằng cách tính số giây từ một ngày tùy ý. Thay vào đó, chúng tôi làm việc về các năm, tháng, ngày, v.v. Nhưng ngay cả với các quy ước này, một lớp phức tạp khác bắt nguồn từ thực tế là các ngôn ngữ và văn hóa khác nhau có cách viết ngày khác nhau. Ví dụ, ở Hoa Kỳ, ngày thường được viết bắt đầu với tháng, sau đó là ngày, sau đó là năm. Điều này có nghĩa là ngày 31 tháng 1 năm 2020, được viết là 01-31-2020. Điều này phù hợp với phiên bản viết dài của ngày.01-31-2020. This closely matches the long-form written version of the date. Tuy nhiên, hầu hết châu Âu và nhiều khu vực khác viết ngày bắt đầu từ ngày, sau đó là tháng, sau đó là năm. Điều này có nghĩa là ngày 31 tháng 1 năm 2020, được viết là 31-01-2020. Những khác biệt này có thể gây ra tất cả các loại nhầm lẫn khi giao tiếp giữa các nền văn hóa.31-01-2020. These differences can cause all sorts of confusion when communicating across cultures. Để giúp tránh các sai lầm truyền thông, Tổ chức Tiêu chuẩn hóa Quốc tế (ISO) đã phát triển ISO 8601. Tiêu chuẩn này chỉ định rằng tất cả các ngày nên được viết theo thứ tự dữ liệu có ý nghĩa nhất. Điều này có nghĩa là định dạng là năm, tháng, ngày, giờ, phút và thứ hai:ISO 8601. This standard specifies that all dates should be written in order of most-to-least-significant data. This means the format is year, month, day, hour, minute, and second: Trong ví dụ này, 9 đại diện cho một năm bốn chữ số và 0 và 1 là hai tháng và ngày, bắt đầu bằng số 0 nếu cần thiết. Sau đó, 2, 0 và 4 đại diện cho hai giờ, phút và giây, bắt đầu bằng số 0 nếu cần thiết.Ưu điểm của định dạng này là ngày có thể được biểu diễn không có sự mơ hồ. Ngày được viết là 5 hoặc 6 có thể bị hiểu sai nếu ngày là số tháng hợp lệ. Bạn sẽ thấy một chút sau về cách bạn có thể sử dụng định dạng ISO 8601 với Python 4.Cách lưu trữ thời gian trong chương trình của bạnHầu hết các nhà phát triển đã làm việc theo thời gian đã nghe lời khuyên để chuyển đổi thời gian địa phương sang UTC và lưu trữ giá trị đó để tham khảo sau này. Trong nhiều trường hợp, đặc biệt là khi bạn lưu trữ ngày từ quá khứ, đây là thông tin đủ để thực hiện bất kỳ số học cần thiết nào. Tuy nhiên, một vấn đề có thể xảy ra nếu người dùng chương trình của bạn nhập vào một ngày trong tương lai trong thời gian địa phương của họ. Múi giờ và quy tắc thời gian tiết kiệm ánh sáng ban ngày thay đổi khá thường xuyên, như bạn đã thấy trước đó với sự thay đổi năm 2007 về thời gian tiết kiệm ánh sáng ban ngày cho Hoa Kỳ và Canada. Nếu quy tắc múi giờ cho vị trí người dùng của bạn thay đổi trước ngày trong tương lai mà họ nhập, thì UTC sẽ giành được đủ thông tin để chuyển đổi trở lại đúng giờ địa phương. Trong trường hợp này, bạn cần lưu trữ thời gian địa phương, bao gồm múi giờ, mà người dùng nhập cũng như phiên bản của cơ sở dữ liệu múi giờ IANA có hiệu lực khi người dùng lưu thời gian. Bằng cách này, bạn sẽ luôn có thể chuyển đổi thời gian địa phương sang UTC. Tuy nhiên, cách tiếp cận này đã giành chiến thắng luôn cho phép bạn chuyển đổi UTC sang đúng giờ địa phương. Sử dụng mô -đun Python >>> from datetime import date, time, datetime >>> today = date.today() >>> today datetime.date(2020, 1, 24) >>> now = datetime.now() >>> now datetime.datetime(2020, 1, 24, 14, 4, 57, 10015) >>> current_time = time(now.hour, now.minute, now.second) >>> datetime.combine(today, current_time) datetime.datetime(2020, 1, 24, 14, 4, 57) 4Như bạn có thể thấy, làm việc với ngày và thời gian trong lập trình có thể phức tạp. May mắn thay, bạn hiếm khi cần thực hiện các tính năng phức tạp từ đầu ngày nay vì nhiều thư viện nguồn mở có sẵn để giúp đỡ. Đây chắc chắn là trường hợp trong Python, bao gồm ba mô -đun riêng biệt trong thư viện tiêu chuẩn để làm việc với ngày và thời gian:
Trong hướng dẫn này, bạn sẽ tập trung vào việc sử dụng mô -đun Python 4. Trọng tâm chính của 4 là làm cho nó bớt phức tạp hơn khi truy cập các thuộc tính của đối tượng liên quan đến ngày, thời gian và múi giờ. Vì các đối tượng này rất hữu ích, 9 cũng trả về các phiên bản của các lớp từ 4. 4 module. The main focus of 4 is to make it less complicated to access attributes of the
object related to dates, times, and time zones. Since these objects are so useful, 9 also returns instances of classes from 4. 6 ít mạnh mẽ và phức tạp hơn để sử dụng so với 4. Nhiều chức năng trong 6 trả về một ví dụ 9 đặc biệt. Đối tượng này có giao diện Tuple được đặt tên để truy cập dữ liệu được lưu trữ, làm cho nó tương tự như một thể hiện là 4. Tuy nhiên, nó không hỗ trợ tất cả các tính năng của 4, đặc biệt là khả năng thực hiện số học với các giá trị thời gian. 9 instance. This object has a
named tuple interface for accessing stored data, making it similar to an instance of 4. However, it doesn’t support all of the features of 4, especially the ability to perform arithmetic with time values. 4 cung cấp ba lớp tạo nên giao diện cấp cao mà hầu hết mọi người sẽ sử dụng:
Tạo các trường hợp Python >>> from datetime import date, time, datetime >>> today = date.today() >>> today datetime.date(2020, 1, 24) >>> now = datetime.now() >>> now datetime.datetime(2020, 1, 24, 14, 4, 57, 10015) >>> current_time = time(now.hour, now.minute, now.second) >>> datetime.combine(today, current_time) datetime.datetime(2020, 1, 24, 14, 4, 57) 4Ba lớp đại diện cho ngày và thời gian trong 4 có bộ khởi tạo tương tự. Chúng có thể được khởi tạo bằng cách truyền các đối số từ khóa cho từng thuộc tính, chẳng hạn như 4, 4 hoặc 8. Bạn có thể thử mã bên dưới để hiểu cách tạo mỗi đối tượng:initializers. They can be instantiated by passing keyword arguments for each of the attributes, such as 4, 4, or 8. You can try the
code below to get a sense of how each object is created:>>>
Trong mã này, bạn nhập ba lớp chính từ 4 và khởi tạo từng lớp bằng cách chuyển các đối số cho hàm tạo. Bạn có thể thấy rằng mã này có phần dài dòng và nếu bạn không có thông tin bạn cần làm số nguyên, các kỹ thuật này có thể được sử dụng để tạo các trường hợp ____24.instantiate each of them by passing arguments to the constructor. You can see that this code is somewhat verbose, and if you don’t have the information you need as
integers, these techniques can’t be used to create 4 instances.May mắn thay, 4 cung cấp một số cách thuận tiện khác để tạo các trường hợp 4. Các phương pháp này don lồng yêu cầu bạn sử dụng số nguyên để chỉ định từng thuộc tính, nhưng thay vào đó cho phép bạn sử dụng một số thông tin khác:
Ba cách tạo ra các trường hợp 4 này rất hữu ích khi bạn không biết trước những thông tin bạn cần truyền vào các bộ khởi tạo cơ bản. Bạn có thể thử mã này để xem cách khởi tạo thay thế hoạt động:>>>
Trong mã này, bạn sử dụng 5, 7 và 9 để tạo các trường hợp của các đối tượng 4, 4 và 6. Mỗi trường hợp được lưu trữ trong một biến khác nhau:
Trên dòng cuối cùng, bạn kết hợp thông tin ngày trong 0 với thông tin thời gian trong 4 để tạo phiên bản 4 mới.Sử dụng các chuỗi để tạo các phiên bản Python >>> from datetime import date, time, datetime >>> today = date.today() >>> today datetime.date(2020, 1, 24) >>> now = datetime.now() >>> now datetime.datetime(2020, 1, 24, 14, 4, 57, 10015) >>> current_time = time(now.hour, now.minute, now.second) >>> datetime.combine(today, current_time) datetime.datetime(2020, 1, 24, 14, 4, 57) 4Một cách khác để tạo các trường hợp 4 là sử dụng 02. Để sử dụng phương pháp này, bạn cung cấp một chuỗi với ngày ở định dạng ISO 8601 mà bạn đã học trước đó. Chẳng hạn, bạn có thể cung cấp một chuỗi với năm, tháng và ngày được chỉ định:Chuỗi này đại diện cho ngày 31 tháng 1 năm 2020, theo định dạng ISO 8601. Bạn có thể tạo một thể hiện 4 với ví dụ sau:>>>
Trong mã này, bạn sử dụng 04 để tạo phiên bản 4 cho ngày 31 tháng 1 năm 2020. Phương pháp này rất hữu ích vì nó dựa trên tiêu chuẩn ISO 8601. Nhưng điều gì sẽ xảy ra nếu bạn có một chuỗi đại diện cho một ngày và giờ nhưng isn ở định dạng ISO 8601?May mắn thay, Python 4 cung cấp một phương pháp gọi là 07 để xử lý tình huống này. Phương pháp này sử dụng ngôn ngữ nhỏ đặc biệt để cho Python biết phần nào của chuỗi được liên kết với các thuộc tính 4.mini-language to tell Python which parts of the string
are associated with the 4 attributes.Để xây dựng một 4 từ một chuỗi bằng cách sử dụng 07, bạn phải nói Python những gì mỗi phần của chuỗi đại diện cho các mã định dạng từ ngôn ngữ nhỏ. Bạn có thể thử ví dụ này để xem cách 07 hoạt động:>>>
Trên dòng 1, bạn tạo 12, đại diện cho ngày và giờ ngày 31 tháng 1 năm 2020, lúc 2:45:37 tối. Trên dòng 2, bạn tạo 13, sử dụng ngôn ngữ nhỏ để chỉ định cách các phần của 12 sẽ được biến thành các thuộc tính 4.line 1, you create 12, which represents the date and time January 31, 2020, at 2:45:37 PM. On
line 2, you create 13, which uses the mini-language to specify how the parts of 12 will be turned into 4 attributes.Trong 13, bạn bao gồm một số mã định dạng và tất cả các dấu gạch ngang ( 17), đại phân ( 18) và không gian chính xác khi chúng xuất hiện trong 12. Để xử lý ngày và giờ trong 12, bạn bao gồm các mã định dạng sau:
Một danh sách đầy đủ tất cả các tùy chọn trong ngôn ngữ nhỏ nằm ngoài phạm vi của hướng dẫn này, nhưng bạn có thể tìm thấy một số tài liệu tham khảo tốt trên web, bao gồm trong tài liệu Python, và trên một trang web có tên strftime.org. Bây giờ 12 và 13 đã được xác định, bạn có thể sử dụng chúng để tạo một thể hiện 4. Ở đây, một ví dụ về cách 07 hoạt động:>>>
Trong mã này, bạn nhập 4 trên dòng 3 và sử dụng 32 với 12 và 13 trên dòng 4. Cuối cùng, dòng 5 hiển thị các giá trị của các thuộc tính trong phiên bản 4 được tạo bởi 07. Bạn có thể thấy rằng chúng phù hợp với các giá trị được hiển thị trong bảng trên.line 3 and use 32 with 12 and 13 on line 4. Finally, line 5 shows the values of the attributes in the 4 instance created by 07. You can see that they match the values shown in the table above.Bắt đầu đếm ngược pycon của bạnBây giờ bạn có đủ thông tin để bắt đầu làm việc trên đồng hồ đếm ngược cho năm tới, Py Pycon US! Pycon US 2021 sẽ bắt đầu vào ngày 12 tháng 5 năm 2021 tại Pittsburgh, PA. Với sự kiện năm 2020 đã bị hủy bỏ, nhiều Pythonistas đã rất phấn khích cho cuộc họp mặt vào năm tới. Đây là một cách tuyệt vời để theo dõi thời gian bạn cần phải chờ đợi và tăng cường các kỹ năng 4 của bạn cùng một lúc!Để bắt đầu, hãy tạo một tệp có tên 38 và thêm mã này:
Trong mã này, bạn nhập 4 từ 4 và xác định hằng số, 41, lưu trữ ngày của pycon tiếp theo chúng tôi. Bạn không mong đợi ngày Pycon sẽ thay đổi, vì vậy bạn đặt tên cho biến trong tất cả các mũ để chỉ ra rằng nó là một hằng số.Tiếp theo, bạn tính toán sự khác biệt giữa 7, đó là thời gian hiện tại và 41. Lấy sự khác biệt giữa hai trường hợp 4 trả về một ví dụ 45. 46 Các trường hợp thể hiện sự thay đổi về thời gian giữa hai trường hợp 4. Delta trong tên là một tham chiếu đến đồng bằng chữ Hy Lạp, được sử dụng trong khoa học và kỹ thuật để có nghĩa là một sự thay đổi. Bạn sẽ tìm hiểu thêm sau này về cách sử dụng 46 cho các hoạt động số học tổng quát hơn.delta in the name is a reference to the Greek letter delta, which is used in science and engineering to mean a change. You’ll learn more later about how to use 46 for more general arithmetic operations.Cuối cùng, sản lượng in, tính đến ngày 9 tháng 4 năm 2020 vào lúc 9:30 tối là:
Chỉ 397 ngày cho đến khi Pycon US 2021! Đầu ra này là một chút cồng kềnh, vì vậy sau này bạn sẽ thấy cách bạn có thể cải thiện định dạng. Nếu bạn chạy tập lệnh này vào một ngày khác, bạn sẽ nhận được một đầu ra khác. Nếu bạn chạy kịch bản sau ngày 12 tháng 5 năm 2021 lúc 8:00 sáng, bạn sẽ nhận được một lượng thời gian âm còn lại! Làm việc với múi giờNhư bạn đã thấy trước đó, lưu trữ múi giờ trong đó một ngày xảy ra là một khía cạnh quan trọng để đảm bảo mã của bạn là chính xác. Python 4 cung cấp 2, đây là một lớp cơ sở trừu tượng cho phép 3 và 7 bao gồm thông tin múi giờ, bao gồm cả ý tưởng về thời gian tiết kiệm ánh sáng ban ngày.Tuy nhiên, 4 không cung cấp một cách trực tiếp để tương tác với cơ sở dữ liệu múi giờ IANA. Tài liệu Python 54 khuyến nghị sử dụng gói bên thứ ba có tên 55. Bạn có thể cài đặt 55 với 57:
Lưu ý rằng tên của gói mà bạn cài đặt từ PYPI, 58, khác với tên mà bạn sử dụng để nhập gói, chỉ là 55.Sử dụng >>> from datetime import date, time, datetime >>> date(year=2020, month=1, day=31) datetime.date(2020, 1, 31) >>> time(hour=13, minute=14, second=31) datetime.time(13, 14, 31) >>> datetime(year=2020, month=1, day=31, hour=13, minute=14, second=31) datetime.datetime(2020, 1, 31, 13, 14, 31) 55 để thêm múi giờ vào Python >>> from datetime import date, time, datetime >>> today = date.today() >>> today datetime.date(2020, 1, 24) >>> now = datetime.now() >>> now datetime.datetime(2020, 1, 24, 14, 4, 57, 10015) >>> current_time = time(now.hour, now.minute, now.second) >>> datetime.combine(today, current_time) datetime.datetime(2020, 1, 24, 14, 4, 57) 4Một lý do mà 55 rất hữu ích là nó bao gồm một giao diện cho cơ sở dữ liệu múi giờ IANA. Điều này đưa rắc rối ra khỏi việc gán các múi giờ cho các trường hợp 4 của bạn. Hãy thử ví dụ này để xem cách đặt phiên bản 4 để có múi giờ địa phương của bạn:>>>
Trong ví dụ này, bạn nhập 65 từ 55 và 4 từ 4. Sau đó, bạn tạo một thể hiện 4 được đặt thành thời gian hiện tại bằng cách sử dụng 70.Bạn cũng chuyển từ khóa 65 cho 70 và đặt 65 bằng 74. Trong 55, 74 trả về một ví dụ cụ thể là 54. Điều này có nghĩa là nó có thể đại diện cho tất cả các phần bù múi giờ cần thiết và thông tin thời gian tiết kiệm ánh sáng ban ngày mà 4 cần.Bạn cũng in tên của múi giờ bằng 79, in 80. Đây là đầu ra cho Windows, nhưng trên MacOS hoặc Linux, đầu ra của bạn có thể đọc 81 nếu bạn ở Múi giờ phía Đông Hoa Kỳ trong mùa đông.Bạn cũng có thể tạo các múi giờ không giống như múi giờ được báo cáo bởi máy tính của bạn. Để làm điều này, bạn sẽ sử dụng 82 và vượt qua tên IANA chính thức cho múi giờ mà bạn quan tâm. Ở đây, một ví dụ về cách sử dụng 82:>>> 0Trong ví dụ này, bạn nhập 65 từ 55 và 4 từ 4. Sau đó, bạn tạo một thể hiện 4 được đặt thành thời gian hiện tại bằng cách sử dụng 70.Bạn cũng chuyển từ khóa 65 cho 70 và đặt 65 bằng 74. Trong 55, 74 trả về một ví dụ cụ thể là 54. Điều này có nghĩa là nó có thể đại diện cho tất cả các phần bù múi giờ cần thiết và thông tin thời gian tiết kiệm ánh sáng ban ngày mà 4 cần.Bạn cũng in tên của múi giờ bằng 79, in 80. Đây là đầu ra cho Windows, nhưng trên MacOS hoặc Linux, đầu ra của bạn có thể đọc 81 nếu bạn ở Múi giờ phía Đông Hoa Kỳ trong mùa đông.Bạn cũng có thể tạo các múi giờ không giống như múi giờ được báo cáo bởi máy tính của bạn. Để làm điều này, bạn sẽ sử dụng 82 và vượt qua tên IANA chính thức cho múi giờ mà bạn quan tâm. Ở đây, một ví dụ về cách sử dụng 82:>>> 1Trong ví dụ này, bạn nhập 65 từ 55 và 4 từ 4. Sau đó, bạn tạo một thể hiện 4 được đặt thành thời gian hiện tại bằng cách sử dụng 70.Bạn cũng chuyển từ khóa 65 cho 70 và đặt 65 bằng 74. Trong 55, 74 trả về một ví dụ cụ thể là 54. Điều này có nghĩa là nó có thể đại diện cho tất cả các phần bù múi giờ cần thiết và thông tin thời gian tiết kiệm ánh sáng ban ngày mà 4 cần.naive vs aware 4 instances. If you already know all about this, then you can skip ahead to improve your PyCon countdown with time zone information.So sánh các trường hợp Python >>> from datetime import date, time, datetime >>> today = date.today() >>> today datetime.date(2020, 1, 24) >>> now = datetime.now() >>> now datetime.datetime(2020, 1, 24, 14, 4, 57, 10015) >>> current_time = time(now.hour, now.minute, now.second) >>> datetime.combine(today, current_time) datetime.datetime(2020, 1, 24, 14, 4, 57) 4 ngây thơ và nhận thứcCác trường hợp Python 4 hỗ trợ hai loại hoạt động, ngây thơ và nhận thức. Sự khác biệt cơ bản giữa chúng là các trường hợp ngây thơ don don chứa thông tin múi giờ, trong khi các trường hợp nhận thức được. Chính thức hơn, để trích dẫn tài liệu Python:
Đây là một sự khác biệt quan trọng để làm việc với Python 4. Một ví dụ 4 nhận thức có thể so sánh chính nó rõ ràng với các trường hợp 4 khác và sẽ luôn trả về khoảng thời gian chính xác khi được sử dụng trong các hoạt động số học.aware 4 instance can compare itself unambiguously to other aware 4 instances and will always return the correct time interval when used in arithmetic
operations.Các trường hợp ngây thơ 4 instances, on the other hand, may be ambiguous. One example of this ambiguity relates to daylight saving time. Areas that practice daylight saving time turn the clocks forward one hour in the spring and backward one hour in the fall. This typically happens at 2:00 AM local time. In the spring, the hour from 2:00 AM to 2:59 AM never happens, and in the fall, the hour from 1:00 AM to 1:59 AM happens twice!Trên thực tế, những gì xảy ra là phần bù từ UTC trong các múi giờ này thay đổi trong suốt cả năm. IANA theo dõi các thay đổi này và danh mục chúng trong các tệp cơ sở dữ liệu khác nhau mà máy tính của bạn đã cài đặt. Sử dụng một thư viện như 55, sử dụng cơ sở dữ liệu IANA dưới mui xe, là một cách tuyệt vời để đảm bảo rằng mã của bạn xử lý đúng số học theo thời gian.Điều này không có nghĩa là bạn luôn cần phải sử dụng các trường hợp Aware ____24. Nhưng các trường hợp nhận thức là rất quan trọng nếu bạn so sánh thời gian với nhau, đặc biệt là nếu bạn so sánh thời gian ở các nơi khác nhau trên thế giới. Cải thiện đếm ngược pycon của bạnBây giờ bạn đã biết cách thêm thông tin múi giờ vào ví dụ Python 4, bạn có thể cải thiện mã đếm ngược PyCon của mình. Trước đó, bạn đã sử dụng hàm tạo 4 tiêu chuẩn để vượt qua năm, tháng, ngày và giờ mà PyCon sẽ bắt đầu. Bạn có thể cập nhật mã của mình để sử dụng mô -đun 15, cung cấp giao diện tự nhiên hơn để tạo các phiên bản 4: 2Trong mã này, bạn nhập 17 và 65 từ 55 và 4 từ 4. Tiếp theo, bạn sử dụng 22 để đọc ngày của PyCon tiếp theo chúng tôi từ một chuỗi. Điều này dễ đọc hơn nhiều so với hàm tạo 4 đơn giản. 22 Trả về một ví dụ 4 ngây thơ, vì vậy bạn sử dụng 26 để thay đổi 2 thành múi giờ 28. Pycon US 2021 sẽ diễn ra tại Pittsburgh, Pennsylvania, nằm trong múi giờ phía đông Hoa Kỳ. Tên kinh điển cho múi giờ đó là 28 vì thành phố New York là thành phố lớn nhất trong múi giờ. 41 là một ví dụ 4 nhận thức với múi giờ được đặt cho thời gian phương Đông của Hoa Kỳ. Vì ngày 12 tháng 5 là sau khi thời gian tiết kiệm ánh sáng ban ngày có hiệu lực, tên múi giờ là 32 hoặc 33.Tiếp theo, bạn tạo 2 để thể hiện thời gian hiện tại và cung cấp cho nó múi giờ địa phương của bạn. Cuối cùng, bạn tìm thấy 46 giữa 41 và 2 và in kết quả. Nếu bạn ở một địa điểm không điều chỉnh đồng hồ để tiết kiệm ánh sáng ban ngày, thì bạn có thể thấy số giờ còn lại cho đến khi PyCon thay đổi thêm một giờ.Làm số học với Python >>> from datetime import date, time, datetime >>> today = date.today() >>> today datetime.date(2020, 1, 24) >>> now = datetime.now() >>> now datetime.datetime(2020, 1, 24, 14, 4, 57, 10015) >>> current_time = time(now.hour, now.minute, now.second) >>> datetime.combine(today, current_time) datetime.datetime(2020, 1, 24, 14, 4, 57) 4Python 4 Các trường hợp hỗ trợ một số loại số học. Như bạn đã thấy trước đó, điều này phụ thuộc vào việc sử dụng các trường hợp 46 để biểu diễn các khoảng thời gian. 46 rất hữu ích vì nó được tích hợp vào thư viện tiêu chuẩn Python. Ở đây, một ví dụ về cách làm việc với 46:
>>> 3Trong mã này, bạn tạo 2, lưu trữ thời gian hiện tại và 44, đây là 46 của 46 ngày. Tiếp theo, bạn thêm 2 và 44 để tạo ra một ví dụ 4 một ngày trong tương lai. Lưu ý rằng làm việc với các trường hợp ngây thơ 4, như bạn đang ở đây, có nghĩa là thuộc tính 6 của số tăng 4 bởi một và không tính đến bất kỳ khoảng thời gian lặp đi lặp lại hoặc bỏ qua.
46 Các trường hợp cũng hỗ trợ các giá trị âm làm đầu vào cho các đối số:>>> 4Trong mã này, bạn tạo 2, lưu trữ thời gian hiện tại và 44, đây là 46 của 46 ngày. Tiếp theo, bạn thêm 2 và 44 để tạo ra một ví dụ 4 một ngày trong tương lai. Lưu ý rằng làm việc với các trường hợp ngây thơ 4, như bạn đang ở đây, có nghĩa là thuộc tính 6 của số tăng 4 bởi một và không tính đến bất kỳ khoảng thời gian lặp đi lặp lại hoặc bỏ qua. 46 Các trường hợp cũng hỗ trợ các giá trị âm làm đầu vào cho các đối số:>>> 5Trong ví dụ này, bạn thêm ba ngày và trừ bốn giờ, vì vậy 4 mới là vào ngày 29 tháng 1 lúc 5:37 sáng. 46 rất hữu ích theo cách này, nhưng nó có phần hạn chế vì nó không thể thêm hoặc trừ các khoảng thời gian lớn hơn một ngày, chẳng hạn như một tháng hoặc một năm. May mắn thay, 55 cung cấp một sự thay thế mạnh mẽ hơn gọi là 63. 63.Cú pháp cơ bản của 63 rất giống với 46. Bạn có thể cung cấp các đối số từ khóa tạo ra sự thay đổi của bất kỳ số năm, tháng, ngày, giờ, giây hoặc micro giây. Bạn có thể sao chép ví dụ 46 đầu tiên với mã này:>>> 6Trong ví dụ này, bạn sử dụng 63 thay vì 46 để tìm 4 tương ứng với ngày mai. Bây giờ bạn có thể thử thêm năm năm, một tháng và ba ngày vào 2 trong khi trừ bốn giờ ba mươi phút:>>> 7Lưu ý trong ví dụ này rằng ngày kết thúc là ngày 1 tháng 3 năm 2025. Điều này là do thêm ba ngày vào 2 sẽ là ngày 29 tháng 1 và thêm một tháng vào ngày 29 tháng 2, chỉ tồn tại trong một năm nhảy. Vì năm 2025 không phải là một năm bước nhảy, ngày diễn ra vào tháng tới.Bạn cũng có thể sử dụng 63 để tính toán chênh lệch giữa hai trường hợp 4. Trước đó, bạn đã sử dụng toán tử trừ để tìm sự khác biệt giữa hai trường hợp Python 4, 41 và 2. Với 63, thay vì sử dụng toán tử trừ, bạn cần vượt qua hai trường hợp 4 làm đối số:>>> 8Trong ví dụ này, bạn tạo một thể hiện 4 mới cho 44 bằng cách tăng trường 58. Sau đó, bạn sử dụng 63 và vượt qua 2 và 44 làm hai đối số. 55 sau đó lấy sự khác biệt giữa hai trường hợp 4 này và trả về kết quả là một ví dụ 63. Trong trường hợp này, sự khác biệt là 54 ngày, vì 2 xảy ra trước 44.Đối tượng 91 có vô số công dụng khác. Bạn có thể sử dụng chúng để tìm thông tin lịch phức tạp, chẳng hạn như năm sau, trong đó tháng 10 ngày 13 rơi vào thứ Sáu hoặc ngày nào sẽ diễn ra vào thứ Sáu cuối cùng của tháng hiện tại. Bạn thậm chí có thể sử dụng chúng để thay thế các thuộc tính của một ví dụ 4 và tạo, ví dụ, 4 một tuần trong tương lai lúc 10:00 sáng. Bạn có thể đọc tất cả về các cách sử dụng khác này trong tài liệu 55.Hoàn thành việc đếm ngược pycon của bạnBây giờ bạn có đủ công cụ trong vành đai của mình để hoàn thành đồng hồ đếm ngược Pycon 2021 của bạn và cung cấp một giao diện đẹp để sử dụng. Trong phần này, bạn sẽ sử dụng 63 để tính thời gian còn lại cho đến khi PYCON, phát triển chức năng để in thời gian còn lại ở định dạng đẹp và hiển thị ngày PYCON cho người dùng.Sử dụng >>> from datetime import date, time, datetime >>> today = date.today() >>> today datetime.date(2020, 1, 24) >>> now = datetime.now() >>> now datetime.datetime(2020, 1, 24, 14, 4, 57, 10015) >>> current_time = time(now.hour, now.minute, now.second) >>> datetime.combine(today, current_time) datetime.datetime(2020, 1, 24, 14, 4, 57) 63 trong PyCon Countdown của bạnĐầu tiên, thay thế toán tử trừ đơn giản bằng 63. Với toán tử trừ, đối tượng 46 của bạn không thể đếm khoảng thời gian lớn hơn một ngày. Tuy nhiên, 63 cho phép bạn hiển thị các năm, tháng và ngày còn lại: 9Thay đổi duy nhất mà bạn đã thực hiện trong mã này là thay thế dòng 11 bằng 00. Đầu ra từ tập lệnh này sẽ cho bạn biết rằng Pycon US 2021 sẽ xảy ra trong khoảng một năm và một tháng, tùy thuộc vào thời điểm bạn chạy tập lệnh.line 11 with 00. The output from this script should tell you that PyCon US 2021 will happen in about one year and one month, depending on when you run the script.Tuy nhiên, đầu ra đó rất đẹp vì nó trông giống như chữ ký của 01. Bạn có thể xây dựng một số đầu ra đẹp hơn bằng cách thay thế dòng 11 trong mã trước bằng mã bên dưới:line 11 in the previous code with the code below: 0Mã này yêu cầu Python 3.8 vì nó sử dụng toán tử Walrus mới. Bạn có thể làm cho tập lệnh này hoạt động trên các phiên bản Python cũ hơn bằng cách sử dụng vòng lặp 02 truyền thống thay cho dòng 17.walrus operator. You can make this script work on older versions of Python by using a traditional 02 loop in place of line 17.Trong mã này, bạn xác định 03, có hai đối số, đơn vị thời gian và thể hiện 63 mà các đơn vị thời gian nên được truy xuất. Nếu lượng thời gian không bằng 0, thì 03 sẽ trả về một chuỗi với lượng thời gian và đơn vị thời gian. Nếu không, nó trả về một chuỗi trống.Bạn sử dụng 03 trong phạm vi hiểu trên dòng 17. Dòng đó tạo ra một trình tạo lưu trữ các chuỗi không trống được trả về từ 03. Nó sử dụng toán tử Walrus để gán giá trị trả về 03 cho 09 và chỉ bao gồm 09 nếu đó là 11.line 17. That line creates a
generator storing the non-empty strings returned from 03. It uses the walrus operator to assign the return value of 03 to 09 and includes 09 only if it is 11.Cuối cùng, dòng 18 in đầu ra cuối cùng bằng cách sử dụng 12 trên trình tạo. Tiếp theo, bạn sẽ xem xét bao gồm cả ngày pycon trong đầu ra từ tập lệnh của bạn.line 18 prints the final output using
12 on the generator. Next, you’ll take a look at including the PyCon date in the output from your script.Hiển thị ngày pycon trong PyCon Countdown của bạnTrước đó, bạn đã tìm hiểu về việc tạo các trường hợp 4 bằng cách sử dụng 07. Phương pháp này sử dụng ngôn ngữ nhỏ đặc biệt trong Python để chỉ định cách thức chuỗi ngày được định dạng.Python 4 có một phương thức bổ sung gọi là 16 cho phép bạn định dạng một thể hiện 4 cho một chuỗi. Theo một nghĩa nào đó, nó có hoạt động ngược của phân tích cú pháp bằng cách sử dụng 07. Bạn có thể phân biệt giữa hai phương thức bằng cách nhớ rằng 19 trong 07 là viết tắt của Parse và 21 trong 16 là viết tắt của định dạng.parse, and the 21 in 16 stands for format.Trong PyCon Countdown, bạn có thể sử dụng 16 để in đầu ra để cho người dùng biết ngày mà PyCon Us sẽ bắt đầu. Hãy nhớ rằng, bạn có thể tìm thấy các mã định dạng mà bạn muốn sử dụng trên strftime.org. Bây giờ thêm mã này vào dòng 18 của tập lệnh đếm ngược PyCon của bạn:line 18 of your PyCon countdown script: 1Trong mã này, dòng 18 sử dụng 16 để tạo một chuỗi đại diện cho ngày bắt đầu của PYCON US 2021. Đầu ra bao gồm các ngày trong tuần, tháng, ngày, năm, giờ, phút, AM hoặc múi giờ và múi giờ:line 18 uses 16 to create a string representing the starting date of PyCon US 2021. The output includes the weekday, month, day, year, hour, minute, AM or PM, and time zone: 2Trên dòng 19, bạn in chuỗi này cho người dùng xem với một số văn bản giải thích. Dòng cuối cùng in lượng thời gian còn lại cho đến ngày bắt đầu PYCON. Tiếp theo, bạn sẽ hoàn thành kịch bản của mình để giúp người khác dễ dàng sử dụng lại.line 19, you print this string for the user to see with some explanatory text. The last line prints the amount of time remaining until the PyCon start date. Next, you’ll finish your script to make it easier for other people to reuse. Hoàn thiện việc đếm ngược pycon của bạnBước cuối cùng mà bạn sẽ muốn thực hiện là tuân theo các thực tiễn tốt nhất của Python và đặt mã tạo ra đầu ra vào chức năng 25. Bạn có thể kiểm tra mã đầy đủ, mã cuối cùng sau khi áp dụng tất cả các thay đổi sau: 3Trong mã này, bạn di chuyển 26 và mã được sử dụng cho trình tạo thành 25. Trên dòng 23, bạn sử dụng mệnh đề Guard để đảm bảo rằng 25 chỉ chạy khi tệp này được thực thi dưới dạng tập lệnh. Điều này cho phép người khác nhập mã của bạn và sử dụng lại 41, ví dụ, nếu họ thích.line 23, you use the guard clause to make sure
that 25 only runs when this file is executed as a script. This allows other people to import your code and reuse 41, for instance, if they’d like.Bây giờ bạn có thể sửa đổi tập lệnh này nhiều như bạn muốn. Một điều gọn gàng cần làm là cho phép người dùng thay đổi múi giờ được liên kết với 2 bằng cách truyền đối số dòng lệnh. Bạn cũng có thể thay đổi 41 thành một cái gì đó gần nhà hơn, nói Pycon Africa hoặc Europython.Để thậm chí còn hào hứng hơn với PyCon, hãy xem Python thực sự tại Pycon US 2019 và làm thế nào để tận dụng tối đa Pycon! Giải pháp thay thế cho Python >>> from datetime import date, time, datetime >>> today = date.today() >>> today datetime.date(2020, 1, 24) >>> now = datetime.now() >>> now datetime.datetime(2020, 1, 24, 14, 4, 57, 10015) >>> current_time = time(now.hour, now.minute, now.second) >>> datetime.combine(today, current_time) datetime.datetime(2020, 1, 24, 14, 4, 57) 4 và >>> from datetime import date, time, datetime >>> date(year=2020, month=1, day=31) datetime.date(2020, 1, 31) >>> time(hour=13, minute=14, second=31) datetime.time(13, 14, 31) >>> datetime(year=2020, month=1, day=31, hour=13, minute=14, second=31) datetime.datetime(2020, 1, 31, 13, 14, 31) 55Python 4 và 55 là sự kết hợp mạnh mẽ của các thư viện khi bạn làm việc với ngày và thời gian. 55 thậm chí còn được khuyến nghị trong tài liệu Python. Tuy nhiên, có nhiều thư viện khác mà bạn có thể sử dụng để làm việc với ngày và giờ ở Python. Một số trong số này dựa vào 4 và 55, trong khi những người khác là thay thế hoàn toàn độc lập:
Ngoài ra, nếu bạn làm việc rất nhiều với các gói khoa học dữ liệu, hoặc các gói khoa học dữ liệu khác, thì có một vài tùy chọn có thể hữu ích cho bạn:
Đọc thêmVì lập trình theo thời gian có thể rất phức tạp, có nhiều tài nguyên trên web để giúp bạn tìm hiểu thêm về nó. May mắn thay, đây là một vấn đề mà nhiều người làm việc trong mọi ngôn ngữ lập trình đã nghĩ đến, vì vậy bạn thường có thể tìm thấy thông tin hoặc công cụ để giúp đỡ với bất kỳ vấn đề nào bạn có thể có. Tại đây, một danh sách các bài viết và video được chọn mà tôi thấy hữu ích khi viết hướng dẫn này:
Ngoài ra, Paul Ganssle là người đóng góp cốt lõi cho CPython và là người bảo trì hiện tại của 55. Các bài viết và video của anh ấy là một nguồn tài nguyên tuyệt vời cho người dùng Python:
Sự kết luậnTrong hướng dẫn này, bạn đã tìm hiểu về lập trình với ngày và thời gian và lý do tại sao nó thường dẫn đến lỗi và sự nhầm lẫn. Bạn cũng đã tìm hiểu về các mô -đun Python 4 và 55 cũng như cách làm việc với các múi giờ trong mã của bạn. 4 and 55 modules as well as how to work with time zones in your code.Bây giờ bạn có thể:
Cuối cùng, bạn đã tạo ra một kịch bản đếm ngược thời gian còn lại cho đến khi Pycon tiếp theo chúng tôi để bạn có thể hào hứng cho cuộc tụ tập Python lớn nhất xung quanh. Ngày và thời gian có thể khó khăn, nhưng với các công cụ Python này trong kho vũ khí của bạn, bạn đã sẵn sàng để giải quyết những vấn đề khó khăn nhất! Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem cùng với hướng dẫn bằng văn bản để hiểu sâu hơn về sự hiểu biết của bạn: Sử dụng mô -đun DateTime của Python This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Using Python's datetime Module Làm thế nào để ngày và thời gian hoạt động trong Python?Trong Python, ngày và thời gian không phải là một loại dữ liệu của riêng họ, nhưng một mô -đun có tên DateTime có thể được nhập để hoạt động với ngày cũng như thời gian. Mô -đun DateTime Python được tích hợp vào Python, do đó không cần phải cài đặt bên ngoài. Mô -đun Datetime Python cung cấp cho các lớp để làm việc theo ngày và giờ.a module named datetime can be imported to work with the date as well as time. Python Datetime module comes built into Python, so there is no need to install it externally. Python Datetime module supplies classes to work with date and time.
Làm thế nào để Python xử lý thời gian?Conclusion.. Sử dụng số điểm nổi, biểu thị vài giây đã trôi qua kể từ thời đại, để đối phó với thời gian .. Quản lý thời gian bằng cách sử dụng các đối tượng Tuples và struct_time .. Chuyển đổi giữa các giây, bộ dữ liệu và chuỗi dấu thời gian .. Đình chỉ việc thực hiện một luồng python .. Đo lường hiệu suất bằng cách sử dụng perf_count (). Làm thế nào để Python xác định định dạng ngày?Làm thế nào để bạn kiểm tra xem ngày ở định dạng DD MM Yyyy ở Python ?.. >>> Nhập Datetime .. >>> xác thực def (Date_Text):. ngày giờ.ngày giờ.Strptime (date_text, '%y-%m-%d'). ngoại trừ valueError:. Tăng giá trịerror ("Định dạng dữ liệu không chính xác, nên là yyyy-mm-dd"). Làm thế nào để máy học xử lý ngày và thời gian?Về cơ bản, bạn có thể phá vỡ ngày và nhận được năm, tháng, tuần trong năm, ngày của tháng, giờ, phút, thứ hai, v.v. Bạn cũng có thể nhận được ngày trong tuần (Thứ Hai = 0, Chủ nhật = 6).Lưu ý hãy cẩn thận với tuần trong năm vì vài ngày đầu năm có thể là 53 nếu tuần đó bắt đầu vào năm trước.break apart the date and get the year, month, week of year, day of month, hour, minute, second, etc. You can also get the day of the week (Monday = 0, Sunday = 6). Note be careful with week of year because the first few days of the year may be 53 if that week begins in the prior year. |