【问题标题】:Time conversion to a path file时间转换为路径文件
【发布时间】:2018-03-06 08:14:33
【问题描述】:

我有一个以时间 (201803061500) 等命名的路径文件。我需要的是时间转换,因为我使用while 循环打开其中的一些文件,例如当我想要文件时出错(...1555 到 ... 1615)和 Python 看到一个明显的问题,因为 1555 之后是 1560,但我希望他将其转换为时间,所以在(...1555 将是 ... 1600)之后任何想法如何用吗?

顺便说一句。时间转换必须包含 4 位数字,因此不能是 16:00/16-00 等。它必须是 1600,因为它作为我的路径文件的输入。有什么想法吗?

更新 - 我这样做了,但这段代码很垃圾,我认为我的问题可以通过一个命令来解决。

Start_time_hours = input('Enter start time (hh): ' )
Start_time_minutes = input('Enter start time (mm): ')

if Start_time_hours >= 24:
    print ("Values from 00 to 23 only!")
if Start_time_minutes >= 60:
    x = Start_time_hours + 1
    y = Start_time_minutes - Start_time_minutes
    if y == 0:
        print "Ok"
        print x, y

if Start_time_minutes <= 55:
        print Start_time_hours, Start_time_minutes

【问题讨论】:

  • 你能添加一些你自己的代码吗,到目前为止你有什么尝试?
  • 你试过 datetime.strptime() 吗?
  • @Ove 当然,但是在我的循环中,我需要在每个循环中添加 5 分钟,并且由于 datetime.strptime() 是一个字符串,我不能这样做,而且当我将这种格式放入我的路径文件时,会发生错误,因为还有年份等。正如我所提到的,我只需要(HHMM - 小时分钟)。
  • datetime.strptime() 的返回值不是字符串。它是一个 datetime 对象,你可以给它添加 timedelta 对象。
  • @Hiddenguy 正如 Ove 建议的那样,使用 timedelta(5 分钟)添加到您的 datetime 对象。添加 timedelta 后,您可以从结果中提取小时和分钟部分。

标签: python time datetime-conversion


【解决方案1】:

处理未格式化时间的一种简单方法是datetime。你可以先剥离你的弦,然后做任何你想做的事!

from datetime import datetime, timedelta
from time import strtime

datetime_object = datetime.strptime(file_name, '%Y%m%d%H%M')

print(datetime_object) # returns '2018-03-06 15:00:00'

delta = timedelta(minutes=5)
next_time = datetime_object + delta 
print(next_time) # returns '2018-03-06 15:05:00'

最后你可以使用time.strftime() 函数取回你的字符串

new_string = next_time.strftime('%Y%m%d%H%M')
print(new_string) # returns '201803061505'

来源datetimehttps://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior 来源timehttps://docs.python.org/2/library/time.html

【讨论】:

  • from datetime import datetime Start_time = input('Enter start time (hh): ' ) Time_range = str(Start_time) x = datetime.strptime(Time_range, '%H%M') print x 好吧,它给了我1900-01-01 14:00:00 的格式,这不是我想要的,而且在这种情况下,我无法在循环中再添加 5 分钟。
  • 这很正常,您需要在添加 5 分钟后将 datetime_objectback 重新转换为字符串。我已经编辑了我的帖子以使其更清晰
【解决方案2】:
Start_time_hours += (Start_time_minutes / 60)
Start_time_minutes %= 60
Start_time_minutes += 5

这三行解决了我的问题,datetime 也可以,但是如果你把这些变量放到input 路径文件中,你会得到一个错误。这就是我选择这个解决方案的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-11
    • 1970-01-01
    • 2014-05-04
    • 2011-07-28
    相关资源
    最近更新 更多