timestamp         = date " " time-24hr ( " " / "," ) ( milliseconds / timezone )

; Date in the form yyyy-mm-dd
date                 = year date-sep month date-sep day
year                 = 4digit                       ; 4 digit year
month                = 2digit                       ; 2 digit month
day                  = "0" digit1-9                 ; 01-09
                       / ("1"/"2") digit1-9         ; 10-29
                       / "3" %d48-49                ; 30-31
                       / digit1-9                   ; 1-9
date-sep             = "-" / "/" / "."              ; date component seperator

; 24 hour time in the form HH:mm:ss
time-24hr            = hours ":" minutes ":" seconds
hours                = tetravigit
minutes              = sexagit
seconds              = sexagit

milliseconds         = 3digit
timezone             = 3alpha

; General terminating token
tetravigit           = ("0"/"1") digit / "2" %d48-51 ; A decimal number in the range 0-23
sexagit              = %d48-53 digit                 ; A decimal number in the range 0-59
digit                = %d48-57                       ; digits 0-9
digit1-9             = %d49-57                       ; digits 1-9
alpha                = %d65-90 / %d97-122            ; Uppercase and lowercase alphabet characters i.e. a-zA-Z
eol                  = (%d10 %d13) / %d10            ; End-of-line (both Windows and Unix)