Chương trình python để chuyển đổi thời gian 24 giờ thành 12 giờ

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 time

Vấ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:30

Chuyể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ã -

Làm thế nào bạn sẽ chuyển đổi một 24

Đối với giờ trưa, chỉ cần thêm “PM” vào cuối thời gian 24 giờ để biến nó thành thời gian 12 giờ . Vì vậy, ví dụ, 12. 45 sẽ trở thành 12. 45 CH. Trừ 12 từ 13. 00 đến 23. 59 và bao gồm “PM. ” Đối với những giờ sau buổi trưa, trừ 12 giờ từ thời gian 24 giờ. Sau đó thêm “PM” vào cuối.

Cách chuyển đổi 24

Triển khai mã C .
#include .
#include .
void convert12(char* str) // Lấy mảng thời gian
int h1 = (int)str[0] - '0';
int h2 = (int)str[1] - '0';