Giả sử tôi có 24 giờ
{'Thứ Tư'. '10. 30 - 21. 00', 'Mặt Trời'. '10. 30 - 21. 00', 'Thu'. '10. 30 - 21. 00',
'Thứ hai'. '10. 30 - 21. 00', 'Thứ Sáu'. '10. 30 - 22. 00', 'Tuế'. '10. 30 - 21. 00',
'Đã ngồi'. '10. 30 - 22. 00'}
Có cách nào để chuyển đổi chúng thành thời gian 12 giờ không?
{'Thứ Tư'. '10. 30AM - 09. 00 giờ tối', 'Mặt trời'. '10. 30AM - 09. 00 giờ chiều',
'Thu'. '10. 30AM - 09. 00 CH', 'Thứ Hai'. '10. 30AM - 09. 00 giờ chiều',
'thứ sáu'. '10. 30AM- 10. 00 PM', 'Thứ Ba'. '10. 30AM- 09. 00 giờ chiều',
'Đã ngồi'. '10. 30AM - 11. 00 giờ tối'}
không có nếu. yêu tinh. có cách nào để chuyển đổi chúng?
Để giúp dễ đọc, tôi chỉ cần nhập datetime.datetime và sau đó đặt bí danh cho nó, theo cách đó bạn không phải gõ datetime.datetime ở mọi nơi
from datetime import datetime as dt def time_converter(time): midday_dt = dt.strptime('12:00','%H:%M') time_dt = dt.strptime(time, '%H:%M') if time_dt >= midday_dt: if time_dt >= dt.strptime('13:00','%H:%M'): hours, minutes = clamp_to_twelve(time_dt, midday_dt) time = f'{hours}:{minutes}' time += ' p.m.' else: if time_dt < dt.strptime('10:00','%H:%M'): time = time[1:] if is_midnight(time_dt): hours, minutes = clamp_to_twelve(time_dt, midday_dt) time = f'{hours}:{minutes:02d}' time += ' a.m.' return time def clamp_to_twelve(time_dt, midday_dt): clamp_dt = time_dt - midday_dt minutes, seconds = divmod(clamp_dt.seconds, 60) hours, minutes = divmod(minutes, 60) return [hours, minutes] def is_midnight(time_dt): return (time_dt >= dt.strptime('00:00','%H:%M') and time_dt <= dt.strptime('00:59','%H:%M')) if __name__ == '__main__': assert time_converter('12:30') == '12:30 p.m.' assert time_converter('09:00') == '9:00 a.m.' assert time_converter('23:15') == '11:15 p.m.'Tiếp theo, nếu bạn chỉ giải nén list được trả lại từ clamp_to_twelve, tôi sẽ chỉ trả lại một tuple
def clamp_to_twelve(time_dt, midday_dt): clamp_dt = time_dt - midday_dt minutes, seconds = divmod(clamp_dt.seconds, 60) hours, minutes = divmod(minutes, 60) return hours, minutesĐiều này giúp bạn không phải xây dựng danh sách, cũng như chi phí bổ sung của việc cấp phát quá mức bộ nhớ để tính đến biến list
Lần tối ưu hóa cuối cùng, bạn có thể cấu trúc lại các câu lệnh def clamp_to_twelve(time_dt, midday_dt): clamp_dt = time_dt - midday_dt minutes, seconds = divmod(clamp_dt.seconds, 60) hours, minutes = divmod(minutes, 60) return hours, minutes 0 của mình để không được lồng vào nhau. Bởi vì bạn đang sử dụng def clamp_to_twelve(time_dt, midday_dt): clamp_dt = time_dt - midday_dt minutes, seconds = divmod(clamp_dt.seconds, 60) hours, minutes = divmod(minutes, 60) return hours, minutes 1 thay vì def clamp_to_twelve(time_dt, midday_dt): clamp_dt = time_dt - midday_dt minutes, seconds = divmod(clamp_dt.seconds, 60) hours, minutes = divmod(minutes, 60) return hours, minutes 2, tất cả các câu lệnh của bạn được thực thi trong các khối lồng nhau
def time_converter(time): midday_dt = dt.strptime('12:00','%H:%M') time_dt = dt.strptime(time, '%H:%M') if time_dt >= dt.strptime('13:00', '%H:%M'): hours, minutes = clamp_to_twelve(time_dt, midday_dt) time = f'{hours}:{minutes} p.m.' elif time_dt > midday_dt: time += ' p.m.' elif time_dt < dt.strptime('10:00', '%H:%M'): time = f'{time[1:]} a.m.' elif is_midnight(time_dt): hours, minutes = clamp_to_twelve(time_dt, midday_dt) time = f'{hours}:{minutes} a.m.' else: time += ' a.m.' return timeVấn đề duy nhất là thứ tự khá quan trọng, vì def clamp_to_twelve(time_dt, midday_dt): clamp_dt = time_dt - midday_dt minutes, seconds = divmod(clamp_dt.seconds, 60) hours, minutes = divmod(minutes, 60) return hours, minutes 3 và def clamp_to_twelve(time_dt, midday_dt): clamp_dt = time_dt - midday_dt minutes, seconds = divmod(clamp_dt.seconds, 60) hours, minutes = divmod(minutes, 60) return hours, minutes 4 không loại trừ lẫn nhau. Tuy nhiên, bạn sẽ hơi mất thời gian do việc tách các khối mã
Trong bài viết này, chúng ta sẽ tìm hiểu cách chuyển đổi thời gian từ định dạng 12 giờ sang 24 giờ. Giả sử chúng ta có ngày đầu vào sau ở định dạng 12 giờ -
________số 8_______Sau đây là đầu ra ở định dạng 24 giờ -
22:25:30Chuyển đổi thời gian hiện tại từ định dạng 12 giờ sang 24 giờ
Để chuyển đổi thời gian từ định dạng 12 giờ thành 24 giờ bằng cách sử dụng phương thức strptime() tích hợp sẵn, đây là mã -