Используйте GNU-Awk (gawk) в UNXUTILS на компьютере Win-7. Этот вопрос касается strftime (.) И сравнения времени с этим.awk; сравнение времени - непонятное поведение strftime
После обсуждения how to compare strftime values, поскольку у меня есть аналогичная проблема. В данных финансового рынка у меня есть дата-строка ($ 25), указанная как «03-APR-2006 09:55:25» (так что time = substr ($ 25, 13, 8)), и моя цель - подсчитать записи (особенно записи об аннулировании заказа), которые поступают после 14:00:00 (14:00).
В моем коде у меня есть строка, которая читает
{ 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)] }
}
}
}}
Просто понял, что неравенство я - если (STRFTIME (подстрока ($ 25, 13, 8))> ("14:00: 00 ")) - имеет только строку в RHS, и я не сделал эту строку аргументом другого strftime (.). Что вызывает недоумение, так это то, что он НЕ дал мне ошибку.
Меня беспокоит, что, хотя он не вызвал никаких ошибок и код не запустился, возможно, он дает мне нечто иное, чем то, что я намеревался с кодом. В окне командной строки, делая
Gawk "{печать (STRFTIME (\" 09: 55: 25 \ ")> (\" 14: 00: 00 \ "))}"
делает выход "0" и
Gawk "{печать (STRFTIME (\" 09: 55: 25 \ ") < (\" 14: 00: 00 \ "))}"
действительно дает «1». Руководство GNU Awk (http://www.gnu.org/software/gawk/manual/gawk.html#Time-Functions) дает небольшую информацию о том, что требуется для значимого сравнения. Только сейчас попробовал выше удаление "STRFTIME" даже от LHS, так как под
простака "{печать ((\" 09: 55: 25 \ ")> (\" 14: 00: 00 \»))}»
и
простак "{печать ((\" 09: 55: 25 \ ")> (\" 14: 00: 00 \ "))}"
и получил те же результаты. Я хочу быть уверенным в том, что получаю правильный результат True/False, потому что GAWK сравнивает время, а не какое-то другое внутреннее правило, которое он использует при выполнении сравнения строк (что приводит к тому, что ограниченный тест является только совпадением). Может ли кто-то решить эту загадку? Благодарю. Лучшее,
Murgie
Вы используете сравнения строк.Для получения дополнительной информации см. Http://www.gnu.org/software/gawk/manual/gawk.html#Variable-Typing –