如何比较strftime值

时间:2013-11-22 11:11:40

标签: python python-2.7 strftime

我有两个从strftime创建的值,如下所示

TIMEFORMAT="%Y-%m-%d %H:%M:%S"

time1 = time.strftime(TIMEFORMAT)
time2 = time.strftime(TIMEFORMAT)

现在time1和time2的值类似于"2013-11-22 04:03:56" "2013-11-22 01:03:56"

值由其他脚本写入文件。我正在从文件中读取这些值然后进行比较。

我想比较像这样的东西

if time1 > time2:
    # do etc. etc. 

如何比较这些时间?

3 个答案:

答案 0 :(得分:4)

是的,你可以比较它们。是的,t1 > t2

In [1]: t1 = "2013-11-22 04:03:56"

In [2]: t2 = "2013-11-22 01:03:56"

In [3]: t1 > t2
Out[3]: True

In [4]: t1 < t2
Out[4]: False

In [5]: t1 == t2
Out[5]: False

答案 1 :(得分:1)

希望这可以帮助你:

In [1]: from datetime import datetime, timedelta

In [2]: nd = datetime.now()

In [3]: pd = nd - timedelta(hours=1)

In [4]: snd = nd.strftime("%Y-%m-%d %H:%M:%S")

In [5]: spd = pd.strftime("%Y-%m-%d %H:%M:%S")

In [6]: print(snd, spd)
('2013-11-22 15:21:22', '2013-11-22 14:21:22')

In [7]: datetime.strptime(snd, "%Y-%m-%d %H:%M:%S") > datetime.strptime(spd, "%Y-%m-%d %H:%M:%S")
Out[7]: True

答案 2 :(得分:0)

我在Win-7 PC上使用UNXUTILS中的GNU-Awk(gawk)。对strftime(。)问题的这个答案引发了一个小问题。我有一个类似的问题。在金融市场数据中,我有一个日期时间字符串(25美元)作为&#34; 03-APR-2006 09:55:25&#34; (所以time = substr($ 25,13,​​8))我的目标是计算在14:00:00(下午2点)之后进来的记录(特别是订单取消记录)。

在我的代码中,我有一行读取

         { if ($3==3) { 
                       { ++CK_NR} 
                       { ++CO_NR[$4, substr($25, 1, 11)] }  
                       { if (strftime(substr($25, 13, 8)) > ("14:00:00"))\
                         {
                          { ++CK_LATE_NR }
                          { ++CO_LATE_NR[$4, substr($25, 1, 11)] }
                         }
                       }
                      }
         }

刚才意识到我使用的不平等 - if(strftime(substr($ 25,13,​​8))&gt;(&#34; 14:00:00&#34;)) - - 在RHS中只有一个字符串,并且我没有使这个字符串成为另一个strftime(。)的参数。令人费解的是,它没有给我一个错误。

我担心虽然它没有产生任何错误,并且代码已经运行,但也许它给了我一些不同于我对代码的意图。在命令提示符窗口中,执行

      \>gawk "{ print (strftime(\"09:55:25\") > (\"14:00:00\")) }"

确实产生&#34; 0&#34;和

      \>gawk "{ print (strftime(\"09:55:25\") < (\"14:00:00\")) }"

确实产生&#34; 1&#34;。 GNU Awk手册(http://www.gnu.org/software/gawk/manual/gawk.html#Time-Functions)几乎没有提供有关有意义比较所需内容的信息。刚刚尝试了上面的删除&#34; strftime&#34;甚至来自LHS,如

      \>gawk "{ print ((\"09:55:25\") > (\"14:00:00\")) }"

      \>gawk "{ print ((\"09:55:25\") > (\"14:00:00\")) }"

并得到了相同的结果。因此,虽然我提供这个作为候选人的回答,&#34; 我想确定我得到了正确的True / False结果,因为GAWK正在比较时间,而不是用于进行字符串比较的其他内部规则(导致有限测试只是巧合)。 / strong>有人可以解决这个难题吗?谢谢。最好,

Murgie