如何在python中将数字转换为时间?

如何在python中将数字转换为时间?,python,Python,我需要把数字转换成时间 例如: 我需要将1230转换为12:30或0730转换为07:30 如何在python中将数字转换为时间?假设输入是字符串,可以执行以下操作: number_str = '0730' time_str = number_str[:2] + ':' + number_str[2:] print(time_str) # Output: '07:30' 假设输入为字符串,则可以执行以下操作: number_str = '0730' time_str = number_str

我需要把数字转换成时间

例如:

我需要将1230转换为12:30或0730转换为07:30

如何在python中将数字转换为时间?

假设输入是字符串,可以执行以下操作:

number_str = '0730'
time_str = number_str[:2] + ':' + number_str[2:]
print(time_str)  # Output: '07:30'
假设输入为字符串,则可以执行以下操作:

number_str = '0730'
time_str = number_str[:2] + ':' + number_str[2:]
print(time_str)  # Output: '07:30'
我们可以创建一个接受字符串并返回时间的函数

所有这些都可以在一行中完成,方法是将字符串切分到使用[:2]完成的分钟数,然后连接“:”,最后将分钟数连接到[2:]

一些测试表明它是有效的:

>>> getTime("1230")
'12:30'
>>> getTime("0730")
'07:30'
>>> getTime("1512")
'15:12'
请注意,函数如何不能接受整数并将其转换为字符串,否则前导零的条目将失败。0730不行

是的,要回答@Abhishtagaya,可以使用lambda函数来编写,但这样做是不可取的。然而:

getTime = lambda t: t[:2] + ':' + t[2:]
工作原理与上述相同。

我们可以创建一个函数,该函数接受字符串并返回时间

所有这些都可以在一行中完成,方法是将字符串切分到使用[:2]完成的分钟数,然后连接“:”,最后将分钟数连接到[2:]

一些测试表明它是有效的:

>>> getTime("1230")
'12:30'
>>> getTime("0730")
'07:30'
>>> getTime("1512")
'15:12'
请注意,函数如何不能接受整数并将其转换为字符串,否则前导零的条目将失败。0730不行

是的,要回答@Abhishtagaya,可以使用lambda函数来编写,但这样做是不可取的。然而:

getTime = lambda t: t[:2] + ':' + t[2:]

工作原理与上述相同。

如果您确定只有4位数字作为字符串,则单向选择

new = '%s:%s'%(string[:2], string[2:])
但是,建议在python中使用datetime处理
.

如果您确定只有4位数字作为字符串,则一种方法是

new = '%s:%s'%(string[:2], string[2:])
但是,建议在python中使用datetime处理
.

您可以将:插入索引2

val = 1230
new= ([str(i) for i in str(val)])
new.insert(2,":")

print(''.join(new))
输出:


您可以将:插入到索引2中

val = 1230
new= ([str(i) for i in str(val)])
new.insert(2,":")

print(''.join(new))
输出:


所有这些都需要4位数的时间。如果有3位数字,此代码将在前面加一个零。它将检查无效时间

def conv_num_time(time):
num_str = ('{:04}'.format(time))
time_str = num_str[:2] + ':' + num_str[2:]
if int(num_str[:2])>23 or int(num_str[2:])>59:
    print("Invalid time")
else:
    print(time_str)
user_time = int(input(': '))
conv_num_time(user_time)

所有这些都需要4位数的时间。如果有3位数字,此代码将在前面加一个零。它将检查无效时间

def conv_num_time(time):
num_str = ('{:04}'.format(time))
time_str = num_str[:2] + ':' + num_str[2:]
if int(num_str[:2])>23 or int(num_str[2:])>59:
    print("Invalid time")
else:
    print(time_str)
user_time = int(input(': '))
conv_num_time(user_time)


这个3277号码是几点的?用DateTimeinstead@RomanPerekhrest,我用json和api获得时间。我需要添加:in number。从何处获取输入?使用其格式写入输入此3277数字的时间是多少?使用DateTimeinstead@RomanPerekhrest,我用json和api获得时间。我需要在number中加:in。从何处获取输入?以其格式写入输入我将以number_str=strnumber_str开头,因此它同时适用于数字和字符串。@Piintesky但是,正如@Joe Iddon指出的,不可能有整数0730-任何前导零都被截断,留下730。因此,你的建议将导致数字_str='730',而不是'0730'。我知道。这只是为了防止像1023这样的数字作为参数传递。但是你是对的,没有人会使用它,因为它不适用于所有时间点。事实上,添加前导零可以使用字符串格式:number_str='{:0>4}'。formatnumber,当给定的number=730或number=0730时,结果是'0730'。附录:实际上,尝试number=0730并不会截断前导零,但是在Python 3中抛出了一个语法错误。我将从number_str=strnumber_str开始,因此它同时适用于数字和字符串。@Piintesky但是,正如@Joe Iddon指出的,不可能有整数0730-任何前导零都被截断,留下730。因此,你的建议将导致数字_str='730',而不是'0730'。我知道。这只是为了防止像1023这样的数字作为参数传递。但是你是对的,没有人会使用它,因为它不适用于所有时间点。事实上,添加前导零可以使用字符串格式:number_str='{:0>4}'。formatnumber,当给定的number=730或number=0730时,结果是'0730'。附录:实际上,尝试number=0730并不会截断前导零,但是在Python 3中抛出了一个语法错误。使用lambda是更好的方法还是只使用一个函数?@abhishtagaya lambda只是定义函数的一种单行方式,它仍然只是一个函数,因此如果您想查看最新的编辑,您肯定可以这样做。为什么不建议使用lambda?我认为可以通过使用str将参数转换为字符串来解决整数问题。可以看出lambda不可取的原因。本质上,如果要将函数分配给变量,则应使用def,如果要创建一个“丢弃”的匿名函数,例如作为排序键,则可以使用lambda。至于整数问题,这是不容易解决的,因为在Python3中,整数定义不能有任何前导零。因此,即使x=08也是无效的,并且会抛出一个错误。使用lambda进行此操作还是仅使用函数更好?@abhishtagaya lambda只是定义函数的一种单行方式
函数,它仍然只是一个函数,所以如果您想查看最新的编辑,您肯定可以这样做。为什么lambda不可取?我认为可以通过使用str将参数转换为字符串来解决整数问题。可以看出lambda不可取的原因。本质上,如果要将函数分配给变量,则应使用def,如果要创建一个“丢弃”的匿名函数,例如作为排序键,则可以使用lambda。至于整数问题,这是不容易解决的,因为在Python3中,整数定义不能有任何前导零。因此,即使x=08也是无效的,将抛出一个错误。