cuốn sách gpt4 ai đã làm

Đồng hồ thời gian của Python

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 11:02:29 31 4
mua khóa gpt4 Nike

Tôi đang cố gắng viết một kịch bản đồng hồ đếm ngược. Tôi muốn sử dụng một ngày đã định trong tương lai và đếm ngược ở định dạng dễ đọc. Giờ, phút, giây. Tôi muốn in ra màn hình LCD 16x2. Vấn đề tôi gặp phải là cố gắng chuyển đổi đầu ra của sự khác biệt giữa các ngày thành một định dạng đẹp. Tôi đã đính kèm những gì tôi có cho đến nay. Tôi nhận được lỗi:

AttributionError: đối tượng 'datetime.timedelta' không có thuộc tính 'strftime' 

Đây là mã của tôi:

từ ngày giờ nhập ngày giờ
từ thời gian nhập strftime

triển khai = datetime(2015, 3, 21, 0, 0)
mydate = datetime.now()-triển khai
in (mydate.strftime("%b %d %H:%M:%S"))

Tôi biết cách in ra màn hình LCD và tạo vòng lặp, chỉ cần trợ giúp về phần này.

câu trả lời hay nhất

Có hai câu hỏi:

  • Nếu bạn sử dụng giờ địa phương được biểu thị dưới dạng đối tượng ngày giờ thô, chênh lệch thời gian có thể không chính xác nếu giờ địa phương tương ứng có độ lệch UTC khác, ví dụ: xung quanh chuyển đổi DST.
  • Sự khác biệt là đồng bằng thời gian Đối tượng không tồn tại strftime() phương pháp

Để khắc phục nó,convert triển khai từ múi giờ địa phương đến UTC :

#!/usr/bin/env trăn
import time
từ datetime nhập datetime, timedelta

triển khai = datetime(2015, 3, 21, 0, 0) # giả sử giờ địa phương
timestamp = time.mktime(deploy.timetuple()) # có thể bị lỗi, xem liên kết bên dưới
triển khai_utc = datetime.utcfromtimestamp(dấu thời gian)
đã trôi qua = triển khai_utc - datetime.utcnow() # `triển khai` là trong tương lai

其中 trôi qua là thời gian đã trôi qua, không bao gồm giây nhuận (ví dụ: 2015-07-01 00:59:60 BST+0100).

có liên quan time.mktime() Để biết thêm chi tiết về thời điểm điều này có thể thất bại, hãy xem Tìm xem 24 giờ đã trôi qua giữa các thời điểm hay chưa - Python .

ĐẾN đồng bằng thời gian Để chuyển đổi thành một chuỗi bạn có thể sử dụng str() 函数:

print(đã trôi qua) # in toàn bộ timedelta
# xóa micro giây
trunc_micros = timedelta(ngày=elapsed.days, giây=elapsed.seconds)
print(trunc_micros) # -> 20 ngày, 13:44:14 <- 17 ký tự
#bỏ dấu phẩy
print(str(trunc_micros).replace(',', ''))
# -> 20 ngày 13:44:14 <- 16 ký tự

Nếu bạn muốn một định dạng khác thì hãy sử dụng divmod() Chức năng chuyển đổi sang giờ, phút, giây:

giây = elapsed.days*86400 + elapsed.seconds # giảm micro giây
phút, giây = divmod(giây, 60)
giờ, phút = divmod(phút, 60)
print("{hours:02d}:{phút:02d}:{seconds:02d}".format(**vars()))
# -> 493:44:14

Về đồng hồ strftime của Python, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/28775345/

31 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress