как сравнить значения 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.
Как сравнить эти времена?
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