Если вы хотите использовать инструмент командной строки, тогда Xidel может делать то, что вы хотите.
x-parse-dateTime :
x:parse-dateTime($input as xs:string, $format as xs:string) as xs:dateTime
Считывает дату / время из строки в заданном формате.Второй параметр $ format - это стандартный формат Pascal, в котором используется ymdhnsz (например, «yyyy-mm-dd»), а не строка изображения XQuery 3.0.
$ cat <<EOF | xidel -s - -e '//book/item[let $a:=x:parse-dateTime(substring-after(pubDate,", "),"dd mmm yyyy hh:nn:ss") return $a > dateTime("2010-06-20T10:45:05") and $a < dateTime("2010-07-05T10:45:05")]/title'
<book>
<item>
<title>Book One</title>
<pubDate>Sun, 20 Jun 2010 10:45:05 GMT</pubDate>
</item>
<item>
<title>Book Two</title>
<pubDate>Mon, 21 Jun 2010 11:40:03 GMT</pubDate>
</item>
<item>
<title>Book Three</title>
<pubDate>Mon, 05 Jul 2010 10:45:05 GMT</pubDate>
</item>
</book>
EOF
Book Two
Поскольку вы сравниваете даты и время сейчас, вы должны также ввести другие 2 как dateTime()
.
Обратите внимание, что x:parse-dateTime()
в настоящее время работает только с английскими и немецкими строками.