023小时军用时钟至标准时间(小时:毫米)

2024-05-08 05:38:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我将如何进行这个过程?假设有人输入“3:5”,我应该能够得到输出“3:05 AM”。或者如果有人输入“00:00”,我应该得到“12:00 AM”。如果时间格式被简单地输入为“hhmm”,我意识到有很多方法可以实现这一点,但是输入的范围可以是“h:m”、“hh:m”、“hh:m”和“hh:mm”。所以这是很有情境性的

def timeConvert():
    miliTime = int(input("Enter a time in hh:mm (military) format: "))
    miliTime.split(":")
    if len(miliTime) == 3:
        hours = miliTime[0]
        minutes = miliTime[2]
        if hours < 0:
            print("Hours can't be less than 0.")
    elif len(miliTime) == 4:
        if miliTime[0:2] >= 10:
            hours = militime[0:2]
            minutes = militime[3]
            if minutes < 0:
                print("Minutes can't be less than 0.")
            if minutes < 10:
                minutes = 0 + minutes
        else:
            hours = miliTime[0]
            minutes = militime[2:]
            if minutes >= 60:
                print("Too big of a number for minutes.")
    else:
        hours = miliTime[0:2]
        minutes = miliTime[3:]
    setting = AM
    if hours > 12:
        setting = PM
        hours -= 12
    print(hours + ":" + minutes + setting)

timeConvert()

Tags: lenifhhbeamsettingcanmm
3条回答

您可以简单地将两列组合在一个字符串函数中。我假设你使用的是24小时制或军事时间,精确到一分钟(100?)

import pandas as pd

df = pd.read_clipboard()

for i in df.columns:

    df[i] = df[i].apply(str)


df['datetime'] = pd.to_datetime(df['date'] + ' ' + df['time'].apply(lambda x: x.zfill(4)))


df
Out[11]: 
      ccy      date time    open    high     low   close            datetime
0  EURUSD  20190211  100  1.1318  1.1319  1.1317  1.1319 2019-02-11 01:00:00
1  EURUSD  20190211  200   1.132  1.1322  1.1319  1.1319 2019-02-11 02:00:00
2  EURUSD  20190211  300  1.1318  1.1319  1.1318  1.1319 2019-02-11 03:00:00
3  EURUSD  20190211  400  1.1319  1.1319  1.1318  1.1318 2019-02-11 04:00:00
4  EURUSD  20190211  500  1.1318  1.1318  1.1318  1.1318 2019-02-11 05:00:00

:分割输入,最后使用格式化输出:

def timeConvert():
    miliTime = input("Enter a time in hh:mm (military) format: ")
    hours, minutes = miliTime.split(":")
    hours, minutes = int(hours), int(minutes)
    setting = "AM"
    if hours > 12:
        setting = "PM"
        hours -= 12
    print(("%02d:%02d" + setting) % (hours, minutes))

使用datetime模块的strptime()将字符串作为datetime对象读取,然后使用strftime()将其转换回字符串,例如-

>>> datetime.datetime.strptime('3:5','%H:%M').strftime('%I:%M %p')
'03:05 AM'
>>> datetime.datetime.strptime('18:30','%H:%M').strftime('%I:%M %p')
'06:30 PM'
>>> datetime.datetime.strptime('00:00','%H:%M').strftime('%I:%M %p')
'12:00 AM'

解释的格式如下:

%H - Hour (24-hour fomrat)

%M - Minute

%I - Hour (12-hour format)

%p - AM or PM


函数看起来像-

def timeConvert():
    import datetime
    ds = input("Enter a time in hh:mm (military) format: ")
    newds = datetime.datetime.strptime(ds, ,'%H:%M').strftime('%I:%M %p')
    print(newds)

相关问题 更多 >