Better to parse it as a duration because it is not a valid timestamp.
time- 1 seconds before?
] unit-test
+! hhmm>duration
+{
+ T{ duration { hour 10 } { minute 20 } }
+} [
+ "1020" hhmm>duration
+] unit-test
+
! parse-rfc822-gmt-offset
{ T{ duration f 0 0 0 0 0 0 } } [
"GMT" parse-rfc822-gmt-offset
: read-sp ( -- token ) " " read-token ;
-: hhmm>timestamp ( hhmm -- timestamp )
- [
- 0 0 0 read-00 read-00 0 instant <timestamp>
- ] with-string-reader ;
-
: signed-gmt-offset ( dt ch -- dt' )
{ { CHAR: + [ 1 ] } { CHAR: - [ -1 ] } } case time* ;
: ymd>timestamp ( str -- timestamp )
[ (ymd>timestamp) ] with-string-reader ;
+
+! Duration parsing
+: hhmm>duration ( hhmm -- duration )
+ [ instant read-00 >>hour read-00 >>minute ] with-string-reader ;
}
{ visit-time
{
- T{ timestamp { hour 2 } }
- T{ timestamp { hour 5 } }
+ T{ duration { hour 2 } }
+ T{ duration { hour 5 } }
}
}
{ request-rate 1 }
{ "crawl-delay" [ string>number >>crawl-delay ] }
{ "request-rate" [ string>number >>request-rate ] }
{
- "visit-time" [ "-" split1 [ hhmm>timestamp ] bi@ 2array
+ "visit-time" [ "-" split1 [ hhmm>duration ] bi@ 2array
>>visit-time
] }
[ pick unknowns>> push-at ]