Yeah, there’s just a big difference parsing-wise between fixed-width and delimited. With fixed-width, obviously you’re expecting only a certain # of characters and more or less than what is specified is going to blow things up.
With delimited though, what if you had a mix of date strings like
["2018-1-1", "2018-1-2", "2018-1-20"], how do you specify the “day” part for parsing? You either of a dateformat string like
"yyyy-m-d", but you can’t really require one or two digits, because there might be both in a set of date strings to be parsed.
So, generally, the approach is that fixed-width parsing is always more strict, while delimited parsing is more lenient.
Another thing maybe we should consider is taking away the default values for month & day parts; that would mean you’d have to explicitly call
Date(2018, 1, 1) instead of relying on defaults. That would have helped this situation because
Date(19800101) would have thrown an error because no month or day arguments were given. I’m not sure how widely used/expected/relied upon those default arguments are though.