【问题标题】:Python: Get latest date time in a simple stringPython:在一个简单的字符串中获取最新的日期时间
【发布时间】:2018-06-24 13:27:21
【问题描述】:

每次打印字符串如何获取最新时间:

我使用了以下代码:


t1 = str(datetime.datetime.now())
s1 = "%s is a programming %s since" +" "+ t1 
s2 = s1%(Einstein, genius)

当我运行这段代码时 - 时间 t1 显示一个恒定的时间值:

print (s2)
Einstein is a programming genius since 2018-06-24 17:33:57.484815
Einstein is a programming genius since 2018-06-24 17:33:57.484815
Einstein is a programming genius since 2018-06-24 17:33:57.484815

有没有办法自动更新“t1”的值,或者换句话说,我怎样才能在每次运行代码时更新时间? 例如:

print(s2)
Einstein is a programming genius since 2018-06-24 17:33:57.484815
Einstein is a programming genius since 2018-06-24 17:34:13.484815
Einstein is a programming genius since 2018-06-24 17:35:26.484815

提前谢谢你。

(我只是编程和 python 的绝对新手)。

【问题讨论】:

    标签: python string date datetime time


    【解决方案1】:

    Python 没有能够自行改变其值的“魔法”变量。对诸如s2 之类的变量的引用将导致它查找您上次分配给它时放入的相同对象 - 并且它将保持不变。为了让 Python 在您每次引用它时都执行,您可能希望使用一个函数来代替。例如,使 s2 成为一个函数,如下所示:

    def s2():
        t1 = str(datetime.datetime.now())
        s1 = "%s is a programming %s since" +" "+ t1 
        return s1%("Einstein", "genius")
    

    现在,在您的代码中使用 s2 的地方使用 s2(),Python 将重新执行您的代码并生成一个包含当前日期/时间的新字符串。

    【讨论】:

    • 非常感谢。我真的不知道如何定义一个函数——或者函数是什么。非常感谢您的指导。
    【解决方案2】:

    尝试将日期时间直接传递给字符串,而不是将其存储在变量中。

    例如:

    import datetime
    import time
    
    s = "%s is a programming %s since %s"
    print ( s %("Einstein", "genius", datetime.datetime.now()))
    time.sleep(5)
    print (s %("Einstein", "genius", datetime.datetime.now()))
    

    输出:

    Einstein is a programming genius since 2018-06-24 19:07:15.697000
    Einstein is a programming genius since 2018-06-24 19:07:20.700000
    

    【讨论】:

    • 谢谢你,Rakesh,我也要试试这个代码。我理解 Leo 的代码——就我现在的编码能力而言,似乎更容易理解。非常感谢您花时间回答我的问题。
    【解决方案3】:

    您可以让函数返回应该是最新的值:

    def make_time():
        return str(datetime.datetime.now())
    
    s = "%s is a programming %s since %%s" % ("Einstein", "genius")
    print(s % make_time())
    print(s % make_time())
    

    【讨论】:

    • 谢谢尤金。应尝试此代码并记住它作为替代方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-11
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    • 2021-10-07
    • 2013-04-01
    相关资源
    最近更新 更多