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填充(000),字符串应遵循相同的规则

因此,将“8:30”字符串修改为“08:30”应该可以做到这一点,因为例如“11:26”是:

  • 小于“8:30”(如
    '1'
    )-这显然是错误的
  • 大于'08:30'(如
    '1'>'0'
    )-这是正确的

一方面你有
datetime.datetime
对象,另一方面你有字符串。这两个是不可比较的,因此必须将其中一个转换为另一个(两种方式都有可能),以便能够比较它们

关键的一点是,在进行比较时,结果应该与您所比较的内容兼容

检查有关转换的规则

您决定将所有内容转换为字符串(这是最简单的方法,尤其是对于经验不足的人(它可以工作,而且非常好),尽管我建议使用另一种方法。在Python中(实际上我不知道有哪种编程语言处理事情的方式不同),字符串是按字典顺序()或字母顺序进行比较的

让我们看一下转换:

如图所示,小于10的数字(表示小时、分钟)用0填充(000),字符串应遵循相同的规则

因此,将“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'