как сравнить значения strftime



У меня есть два значения, созданные из strftime, как показано ниже



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

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


Теперь значения time1 и time 2 похожи на "2013-11-22 04:03:56" "2013-11-22 01:03:56"



Значения записываются другим скриптом в файл. И я читаю эти значения обратно из файла, а затем сравниваю.



Я хочу сравнить что-то вроде этого



if time1 > time2:
# do etc. etc.


Как сравнить эти времена?

612   3  

3 ответов:

Да, вы можете сравнить их. И, да, 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

Надеюсь, это поможет вам:

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

Я использую GNU-Awk (gawk) в UNXUTILS на ПК Win-7. Это ответ на strftime(.) вопрос поднимает небольшую загадку сам по себе. У меня есть похожая проблема. В данных финансового рынка у меня есть строка даты и времени ($25), заданная как "03-APR-2006 09:55:25" (так что 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)) > ("14:00:00")) -- имеет только строку в RHS, , и я не сделал эту строку аргументом другого strftime(.). Что удивительно, так это то, что он не дал мне ошибки.

Я обеспокоен тем, что, хотя он не породил никаких ошибок, и код был запущен, возможно, он дает мне что-то другое, чем я предполагал с кодом. В окне командной строки выполните команду

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

Дает "0" и

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

Действительно дает "1". Руководство GNU Awk (http://www.gnu.org/software/gawk/manual/gawk.html#Time-Functions ) дает мало информации о том, что требуется для содержательного сравнения. Только что попробовал выше удаление "strftime" даже из LHS, как под

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

И

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

И получил те же самые результаты. Поэтому, когда я предлагаю это в качестве кандидата "ответа", я хочу быть уверен, что получаю правильный истинный / ложный результат, потому что GAWK сравнивает время, а не для какого-то другого внутреннего правило, которое он использует при сравнении строк (в результате чего ограниченный тест будет только совпадением).Может ли кто-нибудь разрешить эту загадку? Спасибо. Лучший,

Мерги

Comments

    Ничего не найдено.