Python 根据一天中的当前时间更改变量
我试图每Python 根据一天中的当前时间更改变量,python,Python,我试图每sleep\u time运行一个python脚本,但是我希望这个sleep\u time变量根据一天中的当前时间进行更改。该程序用于分析股票数据,因此在白天(上午8:30-下午5:30),我希望该程序每60秒更新一次数据。如果不是这段时间,我只需要每10分钟更新一次。我目前的代码如下: sleep_time = 60 ts = time.time() st = datetime.datetime.fromtimestamp(ts).strftime('%H:%M') if (st &g
sleep\u time
运行一个python脚本,但是我希望这个sleep\u time
变量根据一天中的当前时间进行更改。该程序用于分析股票数据,因此在白天(上午8:30-下午5:30),我希望该程序每60秒更新一次数据。如果不是这段时间,我只需要每10分钟更新一次。我目前的代码如下:
sleep_time = 60
ts = time.time()
st = datetime.datetime.fromtimestamp(ts).strftime('%H:%M')
if (st >= '8:30' and st <='17:30'):
sleep_time = 60
if(st < '8:30' and st >'17:30'):
sleep_time = 600
while True:
#runs this code every sleep_time seconds to constantly update
...
time.sleep(sleep_time)
sleep\u time=60
ts=时间。时间()
st=datetime.datetime.fromtimestamp(ts).strftime(“%H:%M”)
如果(st>='8:30'和st'17:30'):
睡眠时间=600
尽管如此:
#每隔几秒钟运行此代码以不断更新
...
时间。睡眠(睡眠时间)
但是我不能让它工作,因为st
是一个字符串,我不知道如何比较这样的字符串。任何帮助都将不胜感激Python有一个提供数据类型的模块
你可以比较两个,甚至三个约会时间
提供当前本地日期和时间的时间戳,还提供当前本地日期和时间的时间戳。可以用替换日期时间数据类型的特定值
从日期时间导入日期时间
尽管如此:
#您应该在循环中定义睡眠时间。否则,它在循环的其余部分不会改变。
如果datetime.today().replace(小时=8,分钟=0,秒=0,微秒=0)Python有一个模块,它提供了一个数据类型
你可以比较两个,甚至三个约会时间
提供当前本地日期和时间的时间戳,还提供当前本地日期和时间的时间戳。可以用替换日期时间数据类型的特定值
从日期时间导入日期时间
尽管如此:
#您应该在循环中定义睡眠时间。否则,它在循环的其余部分不会改变。
如果datetime.today().replace(小时=8,分钟=0,秒=0,微秒=0)一方面你有datetime.datetime
对象,另一方面你有字符串。这两个是不可比较的,因此必须将其中一个转换为另一个(两种方式都有可能),以便能够比较它们
关键的一点是,在进行比较时,结果应该与您所比较的内容兼容
检查有关转换的规则
您决定将所有内容转换为字符串(这是最简单的方法,尤其是对于经验不足的人(它可以工作,而且非常好),尽管我建议使用另一种方法。在Python中(实际上我不知道有哪种编程语言处理事情的方式不同),字符串是按字典顺序()或字母顺序进行比较的
让我们看一下转换:
如图所示,小于10的数字(表示小时、分钟)用0填充(0将00),字符串应遵循相同的规则
因此,将“8:30”字符串修改为“08:30”应该可以做到这一点,因为例如“11:26”是:
- 小于“8:30”(如
'1'
)-这显然是错误的
- 大于'08:30'(如
'1'>'0'
)-这是正确的
一方面你有datetime.datetime
对象,另一方面你有字符串。这两个是不可比较的,因此必须将其中一个转换为另一个(两种方式都有可能),以便能够比较它们
关键的一点是,在进行比较时,结果应该与您所比较的内容兼容
检查有关转换的规则
您决定将所有内容转换为字符串(这是最简单的方法,尤其是对于经验不足的人(它可以工作,而且非常好),尽管我建议使用另一种方法。在Python中(实际上我不知道有哪种编程语言处理事情的方式不同),字符串是按字典顺序()或字母顺序进行比较的
让我们看一下转换:
如图所示,小于10的数字(表示小时、分钟)用0填充(0将00),字符串应遵循相同的规则
因此,将“8:30”字符串修改为“08:30”应该可以做到这一点,因为例如“11:26”是:
- 小于“8:30”(如
'1'
)-这显然是错误的
- 大于'08:30'(如
'1'>'0'
)-这是正确的
from datetime import datetime
while True:
#You should define sleep_time inside the loop. Otherwise it won't change for the rest of the loop.
if datetime.today().replace(hour=8, minute=0, second=0, microsecond=0) <= datetime.now() <= datetime.today().replace(hour=15, minute=30, second=0, microsecond=0):
sleep_time = 60
else:
sleep_time = 600
#your code here
time.sleep(sleep_time)
>>> datetime.datetime.fromtimestamp(time.time()).strftime('%H:%M')
'04:29'